Представление, созданное при объединении трех таблиц, одна таблица похожа на другую - PullRequest
2 голосов
/ 09 февраля 2012

Это может быть плохой идеей, но я видел этот дизайн и хочу оценить: у меня есть одно представление, созданное путем объединения двух таблиц (представление продукта, основанное на таблице product и productDetail).

    SELECT
    tP.ProductId,
    tP.ProductType,
    tP.Description
    tPD.Statement,
    tPD.Condition,
FROM
    tbl_Product AS tP
    INNER JOIN tbl_ProductDetail AS tPD
        ON tP.ProductId = tPD.ProductId

Теперь у меня есть новый тип продукта, которому нужно новое поле (например, ExpirationDate) в таблице сведений.Одним из аргументов является то, что, поскольку это применимо только к конкретному типу продукта, мы создаем новую таблицу с именем tbl_FoodProductDetial (новая таблица будет иметь Statement, Condition и ExpirationDate).Интуитивно я думаю, что включение этого поля в tbl_ProductDetail лучше, поэтому нам нужно только добавить дополнительное поле в поле зрения и не беспокоиться о каких-либо новых изменениях.Но аргумент против этого заключается в том, что добавление поля (ExpirationDate) в общую таблицу сведений о продукте не подходит.Какие-либо предложения?Если вы предпочитаете третью таблицу, как объединить эти три таблицы (одна является разновидностью дополнительной таблицы другой)?

Ответы [ 2 ]

2 голосов
/ 09 февраля 2012

Я согласен с Майклом и usr. Кроме того, похоже, что аргумент для третьей таблицы использует объектно-ориентированную логику деривации: класс Food является производным от класса Product, и они пытаются согласовать базу данных со своими классами. Такое мышление приведет к появлению такого количества таблиц, что его будет почти невозможно поддерживать.

2 голосов
/ 09 февраля 2012

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

В этом случае, я думаю, вы можете безопасно использовать существующую таблицу повторно.Третий стол принесет гораздо больше работы, чем я считаю уместным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...