Все следующее - мое мнение, но это хорошая практика: хорошо, наконец-то до меня дошло, что вы получаете.Да, в инвентаре, списке деталей или в любой коллекции предметов, которые вы пытаетесь отследить, может быть символ ОО (т. Е. Родитель-потомок): каждый item
имеет показатель, имеет-класс, имеет-ширина, имеет-материал, имеет-перфорированные / не перфорированные, имеет-длина, имеет-финиш и т. д. прямо через список возможных атрибутов для любого элемента, включая стад, трек, #2 сосновых доски, кусок каменной породы.и так далее.И отношения родитель-потомок, которые вы хотите установить, элегантны и лаконичны.
Но если вы попытаетесь явно выразить это отношение родитель-потомок в таблицах базы данных, у вас возникнут проблемы, и вы в конечном итоге получитеРедизайн базы данных очень скоро.Вы можете , однако, показать эту связь неявно в таблицах вашей базы данных.
Однако, как у вас это не получится, потому что вы пропускаетеодна необходимая часть уникальных данных, которые каждый элемент должен иметь , и это будет один и единственный уникальный ключ в любых таблицах, которые вы решитена.Эта часть данных является SKU.Вам нужен SKU, чтобы отличить предмет от всех других предметов.Как я уже сказал, у каждого предмета есть уникальный SKU, и если у него его сейчас нет, вам придется его изобретать, иначе это будет кошмар: он не сработает.
Итак, ваш главный столдолжно быть что-то вроде этого:
SKU Name length width On-hand Reorder-level Supplier
------------+-------+-------+---------+---------------+---------------
321 stud 6' 2.5 21 4 Studs 'R' Us
654 stud 8' 3.5 10 8 Studs and More
987 stud 10' 2.5 15 10 All Metal Stuff
101 track 10' 1.0 45 25 Try Us First
111 track 12' 1.5 22 15 Main St. Track
------------+-------+-------+---------+---------------+---------------
Ваша таблица измерений (не только калибр, тем не менее) может быть:
SKU Gauge Type Finish Application
------------+-------+--------+--------+-------------
321 .05 Normal shiny Outdoor
654 .05 Normal dull Out/In
987 .08 Light paint Indoor
101 .08 HvyDuty dull Outdoor
111 .60 Normal shiny Out/In
Возможно, вы также захотите поле максимальной нагрузки, когда клиентзвонит и спрашивает «сколько светильников я могу повесить на 4-футовую длину трека?»
Может быть, вы хотите таблицу цен:
SKU Qty Price
------------+-------+--------
321 each 3.50
321 25 86.00
321 100 330.00
654 each 3.15
987 each 2.75
101 each 4.25
111 100 46.75
Что-то в этом роде.Дело в том, что основным ключом в каждой таблице является SKU, и вы можете иметь столько таблиц, сколько захотите, если каждая строка в каждой таблице содержит свое уникальное поле SKU.
Теперь вы можете применить родительский элемент.Дочерние отношения путем ВЫБОРА из одной или нескольких (сколько угодно) таблиц по любым полям, которые вам нравятся, например: дайте мне все блестящие шпильки, которые стоят менее пяти долларов каждая в отдельных количествах.Или покажи мне все шпильки калибра .08 или меньше.Или [остановите меня, прежде чем я утомляю всех!], Может быть, «покажите мне все SKU и названия предметов, количество которых в наличии меньше или равно количеству уровня заказа».
То же самое с треками.
Именно так поступил бы любой дизайнер баз данных подмастерьев, и у этого макета есть еще одно преимущество: он "нормализован" (Google google).У вас есть , чтобы сделать что-то подобное.
Удачи!
HTH