|
|
|
Проектирование бд
|
|||
|---|---|---|---|
|
#18+
Доброе время суток всем! У меня следующая проблема, которую я никак не могу решить. Есть следующая схемка (см.рис). На ней table1, table2, table3. Пусть это будут Клиенты, Поставщики, Служащие, не суть важно. Есть таблица Address в ней хранятся адреса Клиентов, Поставщиков, Служащих, причем у одного клиента, поставщика или служащего адресов может быть несколько, т.е. связь М-М. Еще есть табличка Passport она хранить паспортные данные. Естественно у одного Клиента, Поставщика и Служащего должна быть только одна запись в Passport (не может у человека быть >1 паспорта). Вопрос в следующем: как правильно соеденить таблицы, либо как переделать структуру чтоб она удовлетворяла условиям выше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 19:08 |
|
||
|
Проектирование бд
|
|||
|---|---|---|---|
|
#18+
Глупости... зачем стока таблиц? Короче так нада: Храни всех контрагентов в одной таблице tbl_Partrners: ID_Partner, PartnerName,..., ID_Partner . Это тебя избавит от многих проблем. Отличай их по признаку ID_PartnerType. Признак храни в другой таблице. - tbl_PartnerType: ID_PartnerTyep, PartnerTypeName Теперь ты можешь смело вязать их с адресами: tbl_Address: ID_Address, Address, ID_Partner . А с паспартами еще проще. Эти данные не могут дублироваться, они уникальны по природе => нет надобности их отделять от контрагентов. Храни все поля в той же таблице где и клиенты. Если не хочешь - тогда так tbl_Passport: ID_Passport, PassNum, ID_Partner. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 19:33 |
|
||
|
Проектирование бд
|
|||
|---|---|---|---|
|
#18+
Kulta(не может у человека быть >1 паспорта). да запросто... уже и не говоря о том, что в ряде случаев нужно хранить и историю замены паспортов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 19:38 |
|
||
|
Проектирование бд
|
|||
|---|---|---|---|
|
#18+
ну тогда второй вариант.. кто мешает? таблица tbl_Passport: ID_Passport, PassNum, ID_Partner. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 20:36 |
|
||
|
Проектирование бд
|
|||
|---|---|---|---|
|
#18+
Опыт подсказывает, что нужно объединять справочники такого рода. Это водальнейшем сильно облегчает работу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 20:37 |
|
||
|
Проектирование бд
|
|||
|---|---|---|---|
|
#18+
Насчет объединения всех в одну таблицу. Это не пойдет т.к. Table1, Table2, Table3 разные сущности, и нужно их хранить в разных таблицах (так надо сделать). Историю замены паспортов хранить нет необходимости (в данном контексте этого никода не будет) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2006, 09:21 |
|
||
|
Проектирование бд
|
|||
|---|---|---|---|
|
#18+
Клиент и Поставщик - одна сущность и называется она "Юридическое лицо" Сотрудник - "Физическое лицо" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2006, 13:15 |
|
||
|
Проектирование бд
|
|||
|---|---|---|---|
|
#18+
KultaНасчет объединения всех в одну таблицу. Это не пойдет т.к. Table1, Table2, Table3 разные сущности, и нужно их хранить в разных таблицах (так надо сделать). Историю замены паспортов хранить нет необходимости (в данном контексте этого никода не будет)А один паспорт может принадлежать разным людям? если нет, то фактически имеем Паспорт=Человек, а Клиент, Поставщик и Служащий подтипы Человек. Исключающее наследование см. по соседству. Вариант: Таблицу паспортов совсем убрать (если она больше ни для чего не нужна), а паспорт - просто поле, как и Name. >причем у одного клиента, поставщика или служащего адресов может быть несколько, т.е. связь М-М. а может быть 1:M. Вы опять не рассказали про обратное отношение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2006, 15:24 |
|
||
|
Проектирование бд
|
|||
|---|---|---|---|
|
#18+
Не совсем понял про "обратное отношение". Насчет "причем у одного клиента, поставщика или служащего адресов может быть несколько, т.е. связь М-М. " признаюсь ошибся, конечно же там должно быть 1(table1,table2,table3):М(address). Мне кажется, что все рассуждения приводят к примерно такой схеме: table1 (это человек) + дополнительное поле пределяющее тип человека (Клиент, Поставщик и Служащий) + ключ на адрес + ключ на паспорт. Но опять же изначально хотел иметь 3и таблицы + 2а (может даже один, если без паспорта) справочника ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2006, 16:11 |
|
||
|
Проектирование бд
|
|||
|---|---|---|---|
|
#18+
А если один и тот же человек и клиент и поставщик и не дай бог служащий? Что делать ;) Будем дублировать информацию?! Вообщем вот очень интересная статейка http://blogs.slcdug.org/petermorris/archive/2006/03/30/3903.aspx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2006, 16:26 |
|
||
|
Проектирование бд
|
|||
|---|---|---|---|
|
#18+
А если один и тот же человек и клиент и поставщик и не дай бог служащий? Это что, автоматизация публичного дома? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2006, 16:58 |
|
||
|
Проектирование бд
|
|||
|---|---|---|---|
|
#18+
sergey888Клиент и Поставщик - одна сущность и называется она "Юридическое лицо" Сотрудник - "Физическое лицо" Это глупо. Поставщиком и клиетом может быть и физическое лицо. А если взять и собрать их в одну табличку, просто добавить туда полей, если надо... все становиться предельно просто... А вот Kulta правильно заметил про адреса... может быть и отношение M:M. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2006, 17:42 |
|
||
|
Проектирование бд
|
|||
|---|---|---|---|
|
#18+
Br. Potemkin все становиться предельно просто... угу... тут лучшие умы Российской школы программирования бъются друг с другом насмерть, половина тредов этого раздела завалена телами физиков и юриков вперемешку с супертипами, над полем жестокой битвы витает запах Иприта, Зарина а также EAV и других V-газов... а ему все становиться предельно просто... ЗЫ молодой человек, возвратные формы глаголов (с суфиксом "-ся") в третьем лице пишуцца без мяхкова знака. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2006, 18:11 |
|
||
|
Проектирование бд
|
|||
|---|---|---|---|
|
#18+
Поставщиком и клиетом может быть и физическое лицо.А если взять и собрать их в одну табличку, просто добавить туда полей, если надо... все становиться предельно просто... И как это будет выглядеть на форме? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2006, 18:28 |
|
||
|
Проектирование бд
|
|||
|---|---|---|---|
|
#18+
proposed amendment тут лучшие умы Российской школы программирования бъются друг с другом насмерть я так понимаю тут вопросы решаются, а побиться насмерть это в другом месте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 03:31 |
|
||
|
Проектирование бд
|
|||
|---|---|---|---|
|
#18+
sergey888И как это будет выглядеть на форме? Очень красиво: отличать партнеров от сотрудников можно с помощью типа (ID_PartnerType) выше про него говорил уже. Хочешь - юзай представления. И будет тебе на уровне представлений 3 отдельных справочника. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 03:35 |
|
||
|
Проектирование бд
|
|||
|---|---|---|---|
|
#18+
sergey888 А если один и тот же человек и клиент и поставщик и не дай бог служащий? Это что, автоматизация публичного дома? Ой, а что такого быть не может? Как минимум один человек и даже одна компания может быть и поставщиком и клиентом. Нет можете конечно наставить себе кучу ограничений, что один человек/компания только поставщик или только клиент. Но потом не плачьте когда будете предлагать своим пользователям вводить одну и ту же информацию в нескольких местах одновременно или писать хранимые процедуры/триггеры для синхронизации данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 11:00 |
|
||
|
Проектирование бд
|
|||
|---|---|---|---|
|
#18+
KultaНе совсем понял про "обратное отношение". Да, лучше сказать прямая/обратная связь. Каждый Человек имеет (M) Адрес / Каждый Адрес принадлежит (1) Человек KultaНо опять же изначально хотел иметь 3и таблицы + 2а (может даже один, если без паспорта) справочника С учетом высказанных коллегами опасений? ОК, структурой БД проект не исчерпывается. Можно рулить и в других местах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 13:02 |
|
||
|
Проектирование бд
|
|||
|---|---|---|---|
|
#18+
ModelR Каждый Человек имеет (M) Адрес / Каждый Адрес принадлежит (1) Человек. довольно давно использую схему многие-ко-многим и в телефонном справочнике и в адресной книге один адрес может принадлежать разным людям (компаниям) один телефон может принадлежать разным людям (компаниям) иногда удается выяснить довольно любопытные вещи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 13:20 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=33743228&tid=1545244]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
145ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 440ms |

| 0 / 0 |
