|
|
|
Двойная классификация...торможу
|
|||
|---|---|---|---|
|
#18+
Блин, вот схема данных заказчика. Товар классифицируется по Типу, и по Классу. И Тип, и Класс классифицируются Видом продукции. Тип продукции и Класс продукции - независимы. Поэтому разные сущности. В для сущности Товар - Тип и Класс должны относиться к одному Виду... ...торможу что-то, как правильно описать... как на рисунке - не нравится... С новым Годом! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2008, 19:42 |
|
||
|
Двойная классификация...торможу
|
|||
|---|---|---|---|
|
#18+
А что именно не нравится? В зависимости от конкретных хотелок тут возможна как денормализация вводом атрибута "вид" в товар, так и выделение вспомогательной сущности "КлассоТип" :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2008, 20:53 |
|
||
|
Двойная классификация...торможу
|
|||
|---|---|---|---|
|
#18+
Q, хочется на уровне средств сервера обеспечить невозможность назначение Товару значения Типа, относящегося к Виду, отличному от того, которому соответствует Класс... ... Может, действительно ввести атрибут Вид в Товар? ... Получится через мутные триггеры...или как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2008, 22:00 |
|
||
|
Двойная классификация...торможу
|
|||
|---|---|---|---|
|
#18+
NextManQ, хочется на уровне средств сервера обеспечить невозможность назначение Товару значения Типа, относящегося к Виду, отличному от того, которому соответствует Класс... У меня недавно был точно такой же случай... думал, думал, вконец добавил в таблицу Товар еще два поля, назовем их Check_Tip_vid_id и Check_Class_vid_id, которые заполняются триггерами при инсерте/апдейте и еще есть констрейнт проверяющий что их значения равны друг другу. Тяжеловесно, но ничего лучше не придумал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2009, 20:57 |
|
||
|
Двойная классификация...торможу
|
|||
|---|---|---|---|
|
#18+
NextMan, я так понял, что вид определяется и типом и классом, а товар, в свою очередь, видом. Или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2009, 22:27 |
|
||
|
Двойная классификация...торможу
|
|||
|---|---|---|---|
|
#18+
NextManТовар классифицируется по Типу, и по Классу. И Тип, и Класс классифицируются Видом продукции. Тип продукции и Класс продукции - независимы. Поэтому разные сущности. В для сущности Товар - Тип и Класс должны относиться к одному Виду...NextManТовар классифицируется по Типу, и по Классу. И Тип, и Класс классифицируются Видом продукции. Тип продукции и Класс продукции - независимы. Поэтому разные сущности. И чем такой вариант не устраивает ? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Второй предложенный вариант , с промежуточной таблицей "КлассоТип", в которой будут зафиксированы сочетания классов и типов товаров, на мой взгляд, несколько экзотичен и не менее избыточен, чем первый. Да и логика модификации данных в таком варианте будет несколько сложнее. Возможно, такой вариант имеет право на жизнь в каких-либо ситуациях, но в данном случае, я бы его избегал. Еще один вариант, это добавить CHECK CONSTRAINT к таблице "Товар", в котором с помощью функции проверялись бы совпадение видов для типов и классов. Не то чтобы он сильно плох, но мне кажется, что было бы правильнее, если бы контроль ссылочной целостности проходил всё-таки с использованием FOREIGN KEY, а не CHECK. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2009, 05:56 |
|
||
|
Двойная классификация...торможу
|
|||
|---|---|---|---|
|
#18+
2 Denis V., нет. Еще раз. Тип и Класс определяется Видом, а товар - ими (Типом и Классом) обоими. Причем, в рамках одного Товара Тип и Класс должны относиться к одному Виду. 2 ChA. Понятно. А по какой логике модифицировать (редактировать) связи таблички Товар с табличками Тип и Класс? Или менять принадлежность конкретных записей Тип и Класс к другому Виду? Изменю отношение Типа и, если этот Тип использоваатлся в како-либо Товаре, сразу же FK-ограничения выстрелят, и будет мне головная боль... ...или сделать значения FK-полей "Null enabled", что тоже не есть гут... Пожалуй, что тут действительно лучше КлассоТип вводить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2009, 03:15 |
|
||
|
Двойная классификация...торможу
|
|||
|---|---|---|---|
|
#18+
NextMan2 Denis V., нет. Еще раз. Тип и Класс определяется Видом, а товар - ими (Типом и Классом) обоими. Причем, в рамках одного Товара Тип и Класс должны относиться к одному Виду. Исходя из первоначально представленной информации Denis V. Все верно нарисовал. Что вы и подтверждаете фразами: "Тип и Класс определяется Видом", "Тип и Класс должны относиться к одному Виду". Анализируфя вашу задачу получается что вид - это уникальные сочетания типа и класса. Соответственно предложена привязка товара к виду получаете привязку к "типу" и "классу". Или нужно перефразировать первоначальную постановку, более четко описать на примере, приведя примеры сочетаний разных значений: типов, классов, видов. Например: Товар 1, Тип 1, Класс 1, Вид 1. Товар 2, Тип 1, Класс 2, Вид 2. и т.п. Приведите пример необходимых и достаточных условий для однозначного определения для товара: типа, класса и вида. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2009, 20:48 |
|
||
|
Двойная классификация...торможу
|
|||
|---|---|---|---|
|
#18+
NextManА по какой логике модифицировать (редактировать) связи таблички Товар с табличками Тип и Класс?Возможно не понимаю проблемы. Зачем и как Вы собираетесь редактировать связи ? Чтобы изменить принадлежность товара к другому типу или классу просто меняете его на другое, подходящее по виду. Можете одновременно поменять тип и класс, один UPDATE, естественно с совпадением вида товара. NextManИли менять принадлежность конкретных записей Тип и Класс к другому Виду? Изменю отношение Типа и, если этот Тип использоваатлся в како-либо Товаре, сразу же FK-ограничения выстрелят, и будет мне головная боль...Так, собственно, ради этого схема и предлагалась, чтобы обеспечить ограничения стандартными механизмами СУБД. Для товара невозможно поменять вид только у типа или только класса, только одновременно(они же должны принадлежать одному и тому же виду). Поэтому очевидна следующая логика: Создается новый тип, относящийся к другому виду. Если не существует соответствующего класса такого же вида, то он тоже создается. Изменяются одновременно, одним UPDATE, все три соответствующих поля в таблице товаров Если старый тип старого вида более не нужен, то он удаляется. Если старый класс старого вида более не нужен, то он удаляется. Естественно, все эти операции рекомендуется делать единой транзакцией. NextManПожалуй, что тут действительно лучше КлассоТип вводить...Тут получаем типичную ситуацию многозначной зависимости, т.е., нарушения 4НФ. Вы будете вынуждены делать групповые операции, охватывающие все комбинации данного типа с его классами, а то один и тот же тип будет принадлежать, как минимум, к паре видов и, как минимум, один класс "переедет" с типом в новый вид и также может сработать нарушение FK. При смене вида класса история аналогична, но уже относительно типа. В общем, этот путь, в данной ситуации, IMHO, глубоко порочен. Прежде чем пойти по нему, просто прикиньте все ситуации, может даже стоит обрисовать их на бумаге. Увидите, что не всё так радужно, как могло показаться с первого взгляда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2009, 02:07 |
|
||
|
Двойная классификация...торможу
|
|||
|---|---|---|---|
|
#18+
2 ChA: да, пожалуй, ваша схема с составным внешним ключом будет наиболее удобна. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2009, 02:44 |
|
||
|
Двойная классификация...торможу
|
|||
|---|---|---|---|
|
#18+
NextManБлин, вот схема данных заказчика. Товар классифицируется по Типу, и по Классу. И Тип, и Класс классифицируются Видом продукции. Тип продукции и Класс продукции - независимы. Поэтому разные сущности. В для сущности Товар - Тип и Класс должны относиться к одному Виду... ...торможу что-то, как правильно описать... как на рисунке - не нравится... С новым Годом! Не понятно - какие связи (1-1 или 1-много) Но так как острия стрелок замыкаются на Виде продукции, то лучше поля КодКлассТовара и КодТипТовара ввести в таблицу ВидПродукции, а потом уже с правой таблицей и связывать через КодВидПродукции. Хотя задача не понятна, пояснть бы! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2009, 12:13 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=35744484&tid=1543495]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
216ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
| others: | 236ms |
| total: | 565ms |

| 0 / 0 |
