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

Вниз

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

 
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.61 MB
Время: 0.044 c
15-1172697296
BoB-final
2007-03-01 00:14
2007.03.25
В каких случаях Windows считает оконную прог-мму зависшой?


15-1172657664
Dush
2007-02-28 13:14
2007.03.25
книги .Net


15-1172592012
AntiUser
2007-02-27 19:00
2007.03.25
Покритикуйте, посоветуйте.


15-1172430056
Nic
2007-02-25 22:00
2007.03.25
ЖК-монитор, WinXP, проблемы


1-1170148834
Still Swamp
2007-01-30 12:20
2007.03.25
Open Office + Delphi





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский