Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.03.25;
Скачать: [xml.tar.bz2];

Вниз

Покритикуйте, посоветуйте.   Найти похожие ветки 

 
AntiUser ©   (2007-02-27 19:00) [0]

Принимаю любые замечания, наставления, критику, советы, как что, можно было бы, а может быть и нет, сделать лучше.
Проект БД: http://antiuser.pisem.net/temp/table1.gif

Почему интересуюсь, потому что это мой первый, достаточно сложный проект по проектированию и дальнейшему созданию интерфейса. Вот, собстно, поэтому и хотелось бы услышать аргументированные мнения профессианалов, по, возможным, ошибкам, недочетам, излишествам, что бы в дальнейшем создание интерфейса не стало, ну очень большим геморроем.
К тому же, хотелось бы, что бы вы обратили внимание и на названия полей/таблиц, что бы подсказать мне единый (читай правельный) стиль оформления. Ну и т.д и т.п.

В общем, слушаю. (правда, отойду пока, но я вернусь =))
Зарание, спасибо.


 
oldman ©   (2007-02-27 19:07) [1]

Замечание №1: Мне не понравился зелененький цвет.
Замечание №2: А можно хоть какое-то объяснение, что это за нафиг...


 
Empleado ©   (2007-02-27 19:14) [2]


> AntiUser ©   (27.02.07 19:00)  

Один employee может иметь несколько паспортов? (см. passport_pn)

Если "нет", то passport_pn убрать, а emp_id добавить в passport;
если "да" (в том числе для статистики предыдущих, например), то надо, чтобы было понятно - какой passport действителен в настоящее время и на какой passport надо делать упор (загран, внутренний, иностранный (при многогражданстве)).

дальше - завтра, труба зовет!
bye


 
Empleado ©   (2007-02-27 19:18) [3]

>Empleado ©   (27.02.07 19:14) [2]
ПС. да в любом случае passport_pn можно удалить


 
Gero ©   (2007-02-27 19:18) [4]

Тени убери, они только перегружают картинку. Заголовки выделяй, например, жирным.


 
Gero ©   (2007-02-27 19:20) [5]

Насчет правильности выбора цветов ничего сказать нельзя, имея только это изображение.


 
AntiUser ©   (2007-02-27 20:18) [6]


> Empleado ©   (27.02.07 19:14) [2]

Да, может. О том, какой активный - не подумал, возможно рационально.

> Empleado ©   (27.02.07 19:18) [3]

На каком основании? А как же описать связь?


> oldman ©   (27.02.07 19:07) [1]
> Замечание №1: Мне не понравился зелененький цвет.
> Gero ©   (27.02.07 19:18) [4]
> Gero ©   (27.02.07 19:20) [5]

Само изображение меня не интересует. Могу хоть от руки нарисовать, для вас же старался, что бы читаемо было.

Интересуют мнения по поводу содержания.

> oldman ©   (27.02.07 19:07) [1]
> Замечание №2: А можно хоть какое-то объяснение, что это за нафиг..

Это небольшая БД, типа кадры. Человек - данные (проживание, образование, паспорт, должность, приказы), все они (кроме некоторых приказов) завязаны на человека


 
default ©   (2007-02-27 20:23) [7]

ты прогу пишешь типа ERwin?
можно поговорить
я тоже такую пишу


 
Petr V. Abramov ©   (2007-02-27 20:26) [8]

А зачем все NAME выделены в отдельные таблицы?
а по мелочи - все таблицы названы по-английски, а OTDEL - по-непонятному :)


 
AntiUser ©   (2007-02-27 20:31) [9]


> default ©   (27.02.07 20:23) [7]
> ты прогу пишешь типа ERwin?

Нет не пишу. Я пытаюсь создать базу данных. Эта картинка описывает таблицы, поля и их связи. Поскольку я делаю такую задачу в первый раз, поэтому и спросил мнение.

По поводу картинки. Она создана с помощью PowerDesigner 11, а саму базу делал в PLSQL Developer"e.


 
AntiUser ©   (2007-02-27 20:35) [10]


> Petr V. Abramov ©   (27.02.07 20:26) [8]
> А зачем все NAME выделены в отдельные таблицы?а по мелочи


Предполагается наличие нескольких имен, за сим связь ...


> - все таблицы названы по-английски, а OTDEL - по-непонятному
> :)

Да фиг знает =) Как-то получилось само собой. Пока это прототип, поэтому и советуюсь. Наверное переделаю, а то действительно, как-то не так ;)


 
Petr V. Abramov ©   (2007-02-27 20:38) [11]

> Предполагается наличие нескольких имен, за сим связь ...
у паспорта и у адреса? ну тебе видней предметную облать


 
AntiUser ©   (2007-02-27 20:49) [12]


> Petr V. Abramov ©   (27.02.07 20:38) [11]
> > Предполагается наличие нескольких имен, за сим связь .
> ..у паспорта и у адреса? ну тебе видней предметную облать

Ну а как место прописки и место проживания могу отличаться. Так ведь?
Обязательное наличие российского паспорта, а так же возможность наличия загранпаспорта, тоже, думаю никто не оспорит, а для командировок за границу, можно посмотреть наличие этого паспорта. Соответственно люди уже имеющие его будут иметь приоритет перед теми у кого его не будет, при одинаковых других условиях.


 
Knight ©   (2007-02-27 20:49) [13]


> [11] Petr V. Abramov ©   (27.02.07 20:38)

Местный, Загран, временный, спёртый...
По прописке, фактический, возможные (квартиры для... , явки и пр.)


 
Petr V. Abramov ©   (2007-02-27 21:02) [14]

> AntiUser ©   (27.02.07 20:49) [12]
дык то, что адресов и паспортов может быт несколько - понятно. Но как у конкретного экземпляра паспорта(адреса) может быть несколько названий? Или это ТИП адреса? тогда что значит стрелка - откуда она растет, там "один" или "много"?


 
Knight ©   (2007-02-27 21:14) [15]


> Но как у конкретного экземпляра паспорта(адреса) может быть
> несколько названий

Да... заюзано не так..


 
AntiUser ©   (2007-02-27 21:29) [16]

То есть? Стрелки не в ту сторону? А я, вроде, сначала так и сделал, но потом мне показалось это не совсем верным.
Я, как бы предполагаю так.
Есть PASSPORT имеет свой ID и PASS_NAME_ID, который указвает на запись с названием паспорта.
А как должно быть?


 
Petr V. Abramov ©   (2007-02-27 21:35) [17]

> который указвает на запись с названием паспорта.
что такое "название". если "местный", "заграничный", тогда это ТИП, и так и назови, не смущай народ. Если "первый загранпаспорт Васи" - тогда нечего отдельную таблицу городить (в данном случае, изредка полезно из соображений перфоменса).
А куда стрелки - дело вкуса, главное, чтоб везде одинаково. Но, ИМХО, обычно стрелка растет от "один" указывает на "много"


 
AntiUser ©   (2007-02-27 21:42) [18]


> Petr V. Abramov ©   (27.02.07 21:35) [17]

Ну да, все как Вы говорите. Стрелки растут куда надо =)
Ну раз ТИПЫ, так пусть будут ТИПЫ, это принципиально? Надо ли это отразить в базе? Например, вместо PASSPORT_NAME сделать PASSPORT_TYPE и поле соответственно?


 
Petr V. Abramov ©   (2007-02-27 21:49) [19]

> Ну раз ТИПЫ, так пусть будут ТИПЫ, это принципиально?
да можно и горшки, только непонятно, NAME больно заезженное слово, вот сразу не въехал, что имлось в виду.
> Стрелки растут куда надо =) да откуда я знаю, куда им надо? Конец стрелки (куда она указывает) - это "один" или "много"?


 
AntiUser ©   (2007-02-27 21:57) [20]


> Petr V. Abramov ©   (27.02.07 21:49) [19]
> Конец стрелки (куда она указывает) - это "один" или "много"?

Это "один". Если я все правильно понимаю, т.е. PASSPORT_NAME.NAME = "Российский паспорт", а PASSPORT - их много, по крайней мере, подразумевается, что все сотрудники имеют паспорта российского образца.
Т.е. у меня, что-то не так? Я правильно понимаю?


 
AntiUser ©   (2007-02-27 21:58) [21]

На самом деле меня больше беспокоит этот огород с должностями, отделами и приказами.


 
AntiUser ©   (2007-02-27 22:01) [22]

Что-то интуиция мне подсказывает, что там что-то не так =(


 
Knight ©   (2007-02-27 22:03) [23]

А почему бы не добавить поле ИмяПаспорта к ПАСПОРТ_ПН ?


 
Knight ©   (2007-02-27 22:06) [24]

И действительно для чего нужны эти PASSPORT_PN и ADDRESS_NA ?


 
AntiUser ©   (2007-02-27 22:07) [25]


> Knight ©   (27.02.07 22:03) [23]
> А почему бы не добавить поле ИмяПаспорта к ПАСПОРТ_ПН ?

Теоритически можно, но встает проблема простого и удобного редактирования списка типов (паспортов, адресов, образований, приказов).


 
AntiUser ©   (2007-02-27 22:09) [26]


> Knight ©   (27.02.07 22:06) [24]
> И действительно для чего нужны эти PASSPORT_PN и ADDRESS_NA
> ?

Я тоже над этим думал, не нравились они мне, но решил оставить.

Значит, все-таки лучше убрать?


 
Knight ©   (2007-02-27 22:09) [27]

Имена адресов и паспортов пусть в справочниках, а сами паспорта и адреса сделать по принципу телефонов.. а к телефонам привязать справочник типов телефонов (рабочий, домашний, сотовый...)


 
Knight ©   (2007-02-27 22:11) [28]

То же самое по отношению к верху (FORMATION)... %)


 
Knight ©   (2007-02-27 22:16) [29]

Переведите названия таблиц правого-верхнего сектора... чё-т я не въезжаю..


 
AntiUser ©   (2007-02-27 22:18) [30]


> Knight ©   (27.02.07 22:09) [27]

Понял. Но с телефонами сознательно, поскольку в TELEPHONE будут содержаться только те, которые не относятся к адресам (в ADDRESS есть спец. поле), рабочих телефонов не будет. Остаются только сотовые, поэтому справочник типов для телефонов делать не стал.


 
AntiUser ©   (2007-02-27 22:24) [31]


> Knight ©   (27.02.07 22:16) [29]
> Переведите названия таблиц правого-верхнего сектора... чё-
> т я не въезжаю..

Да, там фигня, сам путаюсь, потом переделаю.
FORM_PROFESSIONS ... ща в коментах посмотрю =)

А вот посмотрел, там действительно ошибка.
FORMATION - справочник типов образований (среднее, высшее и т.д.).
FORM_PROFESSIONS - профессия по образованию.


 
Knight ©   (2007-02-27 22:26) [32]

Это левый-верхний... а я спрашивал ПРАВЫЙ... похоже не мне одному спать пора... :)))


 
wicked ©   (2007-02-27 22:36) [33]

общие замечания:
1) язык, на котором именованы обьекты БД - все таки хорошо бы использовать один, английский либо русский (транслитом ;))
2) "число" в названиях обьектов - employee и address - в одиночном, orders - во множественном.... это приведет к сложностям при запоминании имен обьектов - не все время ж в схему подглядывать?
3) длинные названия обьектов (как по мне) - telephone вполне можно сократить до phone;
и еще - система только телефоны будет хранить? а емейлы, аськи, скайпы, пейджеры? и на каждый из них новую таблицу?
4) выбор типов данных для некоторых полей - зачем в passport числовое значение num? предполагается выбор sum(), min(), max(), avg() по этому полю?
есть такое правило - числовые типы нужно назначать только аттрибутам-значениям, а не аттрибутам свойствам
и зачем для поля job.deleted выделять аж 5 символов?
5) разбивка по полям - зачем в address вынесены отдельно поля korpus, house и street? мы будем искать всех тех, кто живет в "корпусе 2"? аналогично с series и num в passport
6) связки между таблицами - смущает меня что то двойная связка orders и employee через таблицы orders_on и emp_additions - здесь надо что то пересмотреть
7) повальное использование автоинкрементных числовых ключей даже там, где можно обойтись символьными не-автоинкрементными; например, связки между address и address_name, passport и passport_name
но этот пункт уж больно сомнительный

пока вроде всё - это еще не все замечания, а только часть, которая пришла в голову


 
Knight ©   (2007-02-27 22:42) [34]

Имхо... упразднить OTDEL_JOB, ORDER_ON и связку OTDEL-ORDERS


 
Knight ©   (2007-02-27 22:47) [35]

Что такое EMP_ADDITIONS тоже не совсем понял... поэтому, предлагаю тоже можно зарезать :)


 
AntiUser ©   (2007-02-27 23:23) [36]


> Knight ©   (27.02.07 22:42) [34]
> Имхо... упразднить OTDEL_JOB, ORDER_ON и связку OTDEL-ORDERS

OTDEL_JOB нельзя, там совмещение, а вот связь надо переписать на ORDERS
ORDER_ON нельзя, приказы напрямую связанные с сотрудником, например, выговор, поощрение, награждение и т.д.
OTDEL-ORDERS нельзя, при расформировании/создании отдела, должен быть приказ.


> Knight ©   (27.02.07 22:47) [35]
> Что такое EMP_ADDITIONS тоже не совсем понял... поэтому,
>  предлагаю тоже можно зарезать :)

Это надбавка к основному окладу она состоит из множества факторов, но я решил не париться этими факторами, а ограничиться, только указанием общей суммы. ;)


> wicked ©   (27.02.07 22:36) [33]

1. Согласен. Обсуждалось выше.
2. Согласен. Исправлю.
3. ИМХО субъективно. Только телефоны.
4. Number зарезервированное слово, пришлось обойтись его сокращением, а как еще обозначить номер паспорта?
есть такое правило - числовые типы нужно назначать только аттрибутам-значениям, а не аттрибутам свойствам
Если честно, не понял. Не могли бы сформулировать доступнее.
и зачем для поля job.deleted выделять аж 5 символов?
В Oracle нет boolean"а поэтому пишу False default или True, конечно можно и 0-1 и еще как, но так мне нагляднее.
5. Возможно будем ;)
6. Ответил выше в этом посте Knight"у
7. Тоже кажется субъективным.

Обязательно жду дальнейших замечаний. Серьёзно. Поскольку уже достаточно много прояснилось и завтра будет изменено.


 
Knight ©   (2007-02-27 23:35) [37]

Чтобы прояснилось ещё лучше... начни с самого начала... с ТЗ, а то окажется, что там ещё куча ограничений и перспектива борьбы за часть рынка 1С-ЗиК  ;)


 
wicked ©   (2007-02-27 23:49) [38]

> AntiUser ©   (27.02.07 23:23) [36]

> 4. Number зарезервированное слово, пришлось обойтись его
> сокращением, а как еще обозначить номер паспорта?

имелось в виду то, зачем полю "номер паспорта" числовой тип?
я бы обьединил их с серией и сделал одним varchar-ом


> есть такое правило - числовые типы нужно назначать только
> аттрибутам-значениям, а не аттрибутам свойствам
> Если честно, не понял. Не могли бы сформулировать доступнее.

вкратце - "если над полем по правилам предметной области НЕ ПРЕДУСМАТРИВАЮТСЯ арифметические действия, то тип поля нужно делать символьным"
например:
поле "номер дома", "номер накладной" нужно делать символьным
поле "коэффициент надбавки", "процент скидки" - числовым


> и зачем для поля job.deleted выделять аж 5 символов?
> В Oracle нет boolean"а поэтому пишу False default или True,
>  конечно можно и 0-1 и еще как, но так мне нагляднее.

например, сделать его char(1) и проверять на "Y", "N"
либо, если есть в оракле enum-ы (наподобие enum-ов в mysql или перечислимых типов в паскале), то использовать их


 
AntiUser ©   (2007-02-27 23:50) [39]

Да нет ТЗ. Сижу без работы =( И чтобы не терять навыки и приобрести новые - пишу, но с оглядкой. Если получится удачно, то для малого предприятия (я пишу на основе последнего места работы) может и сгодится.


 
Knight ©   (2007-02-27 23:54) [40]

Вот и говорю.. начни с ТЗ... Много чего прояснится для тебя самого %)


 
AntiUser ©   (2007-02-27 23:55) [41]


> wicked ©   (27.02.07 23:49) [38]
> я бы обьединил их с серией и сделал одним varchar-ом
> вкратце - "если над полем по правилам предметной области НЕ ПРЕДУСМАТРИВАЮТСЯ
> арифметические действия, то тип поля нужно делать символьным"например:
> поле "номер дома", "номер накладной" нужно делать символьнымполе
> "коэффициент надбавки", "процент скидки" - числовым

Возможно вы и правы, может объединю.

Спасибо за разъяснение. А это негласное правило?


 
AntiUser ©   (2007-02-27 23:57) [42]


> Knight ©   (27.02.07 23:54) [40]
> Вот и говорю.. начни с ТЗ...

=)
Ну вот, я несколько недель потратил на создание этой БД, а вы мне в середине разработки предлагаете ТЗ написать.


 
Petr V. Abramov ©   (2007-02-28 00:01) [43]

> AntiUser ©   (27.02.07 23:55) [41]
> А это негласное правило?
фактически да. потому что в номерах чего угодно обязательно повится что-либо типа "1а" или "123/испр"


 
Knight ©   (2007-02-28 00:04) [44]


> а вы мне в середине разработки

Это ещё несколько недель? Тогда точно проще начать с ТЗ ;)


 
Petr V. Abramov ©   (2007-02-28 00:06) [45]

> В Oracle нет boolean"а поэтому пишу False default или True, конечно можно и 0-1 и еще как, но так мне нагляднее.
и будешь по жизни в своем True ошибаться с регистром.


 
Petr V. Abramov ©   (2007-02-28 00:10) [46]

> Knight ©   (28.02.07 00:04) [44]
фигня это все, в данном случае ТЗ умещается в голове, в виде четкого понимания, чего нужно от приложения, а чего нет. А ради базы из 15 табличек бумагу марать не стОит, тем более, что человек один пишет.


 
Knight ©   (2007-02-28 00:18) [47]


>  [46] Petr V. Abramov ©   (28.02.07 00:10)

Часто небольшой набросок того что требуется... пусть даже на один-два листа.. и даёт это самое чёткое поимание, особенно в случае "Почему интересуюсь, потому что это мой первый..." :)


 
AntiUser ©   (2007-02-28 00:19) [48]


> Petr V. Abramov ©   (28.02.07 00:06) [45]
> > В Oracle нет boolean"а поэтому пишу False default или
> True, конечно можно и 0-1 и еще как, но так мне нагляднее.
> и будешь по жизни в своем True ошибаться с регистром.

Уговорили =) Потому, что уже один раз столкнулся =)


> Petr V. Abramov ©   (28.02.07 00:10) [46]
> > Knight ©   (28.02.07 00:04) [44] фигня это все, в данном
> случае ТЗ умещается в голове, в виде четкого понимания,
> чего нужно от приложения, а чего нет. А ради базы из 15
> табличек бумагу марать не стОит, тем более, что человек
> один пишет.

Во! Действительно! А я тут сижу и думаю как отмазаться =)

Если еще не все потеряли интерес, то с удовольствием выслушаю все точки зрения.
Да же за эти 50 постов, я открыл для себя больше чем за последнюю неделю, работая над этим проектом.


 
AntiUser ©   (2007-02-28 00:22) [49]


> Knight ©   (28.02.07 00:18) [47]

Ну не совсем первый, я же до этого тоже без дела не сидел. Но с таким переплетением связей (особенно как в правом верхнем углу) - первый.


 
Knight ©   (2007-02-28 00:23) [50]

Ну да... с таким пониманием, можно и не такого накрутить %)


 
Knight ©   (2007-02-28 00:26) [51]

Шутка... не обижайся ;)


 
ZeroDivide ©   (2007-02-28 00:37) [52]


> Но с таким переплетением связей (особенно как в правом верхнем
> углу) - первый.


Бывает и такое:
http://patrony-na.front.ru/img/nightmare.jpg

:) Это мое (в соавторстве) творение.


 
AntiUser ©   (2007-02-28 00:45) [53]


> Knight ©   (28.02.07 00:23) [50]
> Ну да... с таким пониманием

Ну с каким - таким? Я-то все это понимаю и для чего связи и с чем, и зачем они связаны - тоже. Но при этом я еще попутно думаю как/какие классы буду создавать, что они будут делать и т.д. Вот и решил здесь спросить перед написанием интерфейса. И, как показала практика, не зря. Опытные глаза сразу выявили ненужные таблицы, про "аттрибутам-значениям, а не аттрибутам свойствам" узнал попутно, связь неверную обнаружил.
Так что, с пониманием - нормуль, главное, чтобы было кому это понимание мне донести, а это и есть эти опытные глаза, которые не одну такую (или примерно) бд слопатили.


 
AntiUser ©   (2007-02-28 00:47) [54]


> ZeroDivide ©   (28.02.07 00:37) [52]

Нет. Такого не бывает =) Такое может только присниться, да и то в кошмаре =)


 
vuk ©   (2007-02-28 01:25) [55]

Глянул схемку... Попробую дать совет. Как делается у нас. Для полей в каждой таблице выбирается префикс и имя каждого поля в таблице начинается с префикса. Ну, например, для таблицы Employee логичным выглядит префикс emp. То есть в Вашем примере поля назывались бы:

emp_ID
emp_Surname
emp_Name
...
и т.д.
Что это дает?
1. одно и то же по смыслу поле всегда называется одинаково (у Вас сейчас ID в таблице Employee и EMP_ID в таблицах, которые ссылаются на Employee).
2. Если делаются объединения таблиц, то поля не нужно переименовывать в запросе (в Вашем случае, если делается соединение двух таблиц, содержащих, например, поле Name, одно из полей придется переименовать в запросе).
3. Следствие из (2). Когда Вы глядите на результат запроса, сразу понятно, из какой таблицы поле пришло (префиксы часто легко оседают в памяти).

Про остальное сказать ничего не могу, т.к. выводы можно делать только детально зная ТЗ.


 
AntiUser ©   (2007-02-28 08:53) [56]


> vuk ©   (28.02.07 01:25) [55]

Спасибо, приму к сведению.


 
Sergey13 ©   (2007-02-28 08:54) [57]

Почитал по диагонали все предыдущие советы, так что может быть повторю кого-нибудь.
1. Я не увидел иерархической зависимости подразделений и людей. Для кадров это важно.
2. Писать "от нечего делать" на Оракле кадры для малого предприятия - это, ИМХО, полная утопия. Просто кадры (как самостоятельная задача) малому предприятию не нужны - на 10-20 человек никто и не будет это вести. Если предполагается зарплата, то это не отражено и все равно кажется сомнительным нужда в кадровой подзадаче - достаточно списка работников. Ну и юзать Оракл для малого предприятия - тоже ИМХО слишком уж круто. Т.е. налицо явный маркетинговый просчет. А для большого предприятия - там все несколько сложнее устроено (насколько я помню - я курировал подобную задачу) и этой схемки будет явно недостаточно. Т.е. все это нормально (с учетом замечаний) для курсового проекта или просто экзерсисов для самосовершенствования, но явно недостаточно для какого-либо реального внедрения.


 
Empleado ©   (2007-02-28 11:36) [58]


> AntiUser ©   (27.02.07 20:18) [6]
> > Empleado ©   (27.02.07 19:14) [2]
> Да, может. О том, какой активный - не подумал, возможно
> рационально.

Возможно стоит указать obsolete, т.к. активных паспортов может быть несколько.
Например, у Гусинского их теперь три :)

> > Empleado ©   (27.02.07 19:18) [3]
> А как же описать связь?

Добавить emp_id и соответствующую связь в таблицу passport?


 
Empleado ©   (2007-02-28 12:10) [59]

Возможно повторюсь, т.к. возможно пропустил что-то из уже сказанного выше:

1) таблица passport_name. Я так понимаю, что это passport_type?

2) таблица emp_additions
Если никакие другие таблицы на нее не ссылаются, может сделать PK из (emp_id; ord_id), а id совсем выбросить?
Смотри по аналогии orders_on, где id нужен; а вот уже в otdel_job - id фактически не нужен, и можно сделать PK из трех полей;
и т.д. для всех подобных ситуаций

3) orders_name - это orders_type? :))

4) таблицы job, otdel, orders;
Зачем нужен ord_id в otdel? По данному смыслу: он показывает к какому Заказу принадлежит Отдел - что не имеет смысла.
Можно добавить еще одну таблицу отношений между otdel и orders, например: orders_per_otdel (otdel_id, ord_id; PK = [otdel_id, ord_id]), и сослаться на эту таблицу из otdel и orders. Тогда ord_id можно убрать из otdel.
Если уж надо оставить так по каким-то соображениям, то: С подобной связью не всегда удобно программировать.

5) address: Адрес не имеет номера телефона. В общем случае телефон прикреплен к человеку (НО, возможно я ошибаюсь!)

6) Если уж идет растасовка на адреса (домашний, рабочий, адрес доставки товара, временный и т.д.), то почему нет подобного для communication devices, например? Т.е. Один человек может иметь: сотовый (а иногда и два), факс, е-mail, телефон жены/тещи, skype account и т.д....

7) что показывает связь между job и orders?

Всего доброго.


 
Empleado ©   (2007-02-28 12:28) [60]

Пересмотреть связку таблиц: employee - otdel_job - job - otdel

Дано:
Работнички (одна таблица)
(Q: Один работник может быть одновременно в двух и более отделах?(PS. у нас в конторе - может))
Должности (одна таблица)
(Q: Один работник может занимать две и более должности?)
Отделы (одна таблица)
(Q: Список должностей по отделам - так ли он необходим?)
Заказы (одна таблица)
(Q: От чего зависят заказы?)

Остальное - отношения между ними, описанные, в общем случае, отдельными таблицами (но необязательно - зависит от смысла), ссылающимися на эти четыре.

ПС. "Q:" - вопрос на обдумку :))

Всего доброго.


 
DrAndrey ©   (2007-02-28 15:22) [61]

Писал "Кадры" 2 года назад для организации 450 сотрудников, структура значительно сложнее - 74 таблицы. Времени ушло почти год (долго придумывал саму концепцию), но заказчик очень доволен, потому что прога специфическая, под конкретное учреждение. Цена вопроса 250$, больше она и не стоит.

Начни с изучения документов, в первую очередь Трудовой кодекс РФ, ОКИН, ОКСО и т.д. Очень помогло изучение аналогичного ПО от "ОАЗИС" и 1С, журнал "Справочник кадровика", инструкция МО "О постановке на воинский учет" и др. ведомственные документы.

Все отделы в одну таблицу с ID, Parent_ID.

Имена полей лучше русские транслит. т.к., могут быть сложные термины, перевести и коротко записать которые проблематично.

Есть такая штука "Личная карточка", знаешь?


 
AntiUser ©   (2007-02-28 18:14) [62]


> Sergey13 ©   (28.02.07 08:54) [57]
> 1. Я не увидел иерархической зависимости
> подразделений и людей. Для кадров это важно.

Возможно вы и правы. А ка это лучше оформить? В виде поля с приоритетом 1,2,3 и т.д.?


> Empleado ©   (28.02.07 11:36) [58]

С этим ясно.


> Empleado ©   (28.02.07 12:10) [59]

1. Да.
2. В общем, может вы и правы. Подумаю. Спасибо.
3. Да.
4. ORDERS, это приказы.
5. В общем случае телефон прикреплен к человеку (НО, возможно я ошибаюсь!)
Да, скорее всего, то что в скобках ;)
6. За допонительные телефоны отвечает таблица TELEPHONE. Об этом выше обсуждалось.
7. Приказы по должности.


> Empleado ©   (28.02.07 12:28) [60]
> Пересмотреть связку таблиц: employee - otdel_job - job -
>  otdelДано: Работнички (одна таблица) (Q: Один работник
> может быть одновременно в двух и более отделах?(PS. у нас
> в конторе - может))Должности (одна таблица) (Q: Один работник
> может занимать две и более должности?)Отделы (одна таблица)
> (Q: Список должностей по отделам - так ли он необходим?)Заказы
> (одна таблица) (Q: От чего зависят заказы?)

На все Q - да, кроме последнего, это не заказы, а приказы.


> DrAndrey ©   (28.02.07 15:22) [61]
> Есть такая штука "Личная карточка", знаешь?

Про прочтение, это хорошо, но не сейчас, т.к. задача стоит проще и (в основном) пишется дляприобретения навыков создания БД.

Про "Личная карточка" незнаю. Что это?


 
DrAndrey ©   (2007-02-28 18:23) [63]

Личная карточка - это для гос. и муницип. организаций обязательная регистрационная форма, которая заполняется на каждого сотрудника.

>Про прочтение, это хорошо, но не сейчас...

После того как сотряпаешь базу по своей чудовищной схеме, читать уже будет поздно. А если <для приобретения навыков создания БД>, то на мой взгляд, задача слишком сложная. Поверь мне, когда я начинал свои "Кадры", то тоже думал, что все так просто и быстро.


 
AntiUser ©   (2007-02-28 20:01) [64]


> DrAndrey ©   (28.02.07 18:23) [63]

Так у вас БД была под заказ, ха деньги, по ГОСТ"ам, а у меня для освоения принцыпов бд.


 
Sergey13 ©   (2007-03-01 08:35) [65]

> [62] AntiUser ©   (28.02.07 18:14)

> А ка это лучше оформить? В виде поля с приоритетом 1,2,3 и т.д.?
Нет. Классический способ - поля Id и Parent_Id. Второе ссылается на первое. В Оракле такая структура на ура раскручивается через запросы с connect by.


 
Empleado ©   (2007-03-01 11:32) [66]

>4. ORDERS, это приказы.
ОК.
Тогда получается, что отношение otdel --> orders указывает на Приказ, на основании которого отдел был создан? (т.к. возможна ссылка из Отдела только на один Приказ)

Есть приказы. А дальше - все, что ссылается на них: кем выдан, на кого распространяется и т.д.
Есть отделы....

>>7) что показывает связь между job и orders?
>7. Приказы по должности.

Переименовать ВСЕ таблицы!!! :)) Не шучу!


 
vuk ©   (2007-03-01 12:07) [67]

А вот еще автору ветки вопрос на "подумать".
Ситуация: Приказом A работник B переведен с должности C на должность D. Что делать будете?


 
AntiUser ©   (2007-03-01 13:24) [68]


> Sergey13 ©   (01.03.07 08:35) [65]

Т.е. дерево?


> Empleado ©   (01.03.07 11:32) [66]
> Переименовать ВСЕ таблицы!!! :)) Не шучу!

На счет приказов по отделу - да. Но типы приказов могут быть разные. В общем надо подумать.

Про переименовать. И как вы себе это видите?


> vuk ©   (01.03.07 12:07) [67]

Обязательно отвечу.

Просто сейчас 39 температура, не до этого, извиняйте.


 
Sergey13 ©   (2007-03-01 13:26) [69]

> [68] AntiUser ©   (01.03.07 13:24)
> Т.е. дерево?
Ну да. Дерево и иерархия - это практически синонимы.


 
AntiUser ©   (2007-03-02 08:59) [70]


> vuk ©   (01.03.07 12:07) [67]
> А вот еще автору ветки вопрос на "подумать".Ситуация: Приказом
> A работник B переведен с должности C на должность D. Что
> делать будете?

А чего думать-то, работника А снимаем с должности С на основании приказа А и назначаем на должность D на основании того же приказа.
А как вы это видите?



Страницы: 1 2 вся ветка

Форум: "Прочее";
Текущий архив: 2007.03.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.67 MB
Время: 0.036 c
15-1172719059
Slider007
2007-03-01 06:17
2007.03.25
С днем рождения ! 29 февраля


2-1172907376
elserpiente
2007-03-03 10:36
2007.03.25
Что это?


15-1172505169
Cyrax
2007-02-26 18:52
2007.03.25
partial в C#


15-1172597770
Kerk
2007-02-27 20:36
2007.03.25
Преобразование выражений


15-1172760867
Vlad Oshin
2007-03-01 17:54
2007.03.25
И вы молчали!!!? :))





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский