Как сделать составной ключ, используя внешние ключи? - PullRequest
0 голосов
/ 31 марта 2020

У меня есть первичный ключ CustomerNo из таблицы и другой первичный ключ ProductNo. из другой таблицы. Я хочу использовать их в качестве составного ключа в дополнение к третьему столбцу с именем Date в третьей таблице с именем Order. Итак, идея в том, что в таблице Order у меня есть составной ключ, который объединен CustomerNo-ProductNo-Date. Date (как отдельный столбец) может быть продублирован в таблице. Однако составная комбинация клавиш останется уникальной. Как я могу сделать это возможным?

1 Ответ

0 голосов
/ 01 апреля 2020

Я согласен с P.Salmon в том, что структура вашего стола не идеальна. Создание собственного составного ключа, подобного этому, снизит эффективность поиска, поскольку это не будет быстрый поиск по индексированным ключам (например, вы можете искать «все заказы, сделанные вчера», «все заказы в этом году конкретным клиентом» или даже «какие продукты никто не покупает». Для каждого из этих поисков вам придется анализировать правильную информацию из составного ключа, то есть не только ваш запрос SQL будет возвращать каждый результат, но вам также придется анализировать каждый из них. результат и определите, является ли элемент с ключом 0015053020200412124523 частью заказа клиента 0530.

Одним из альтернативных решений будет таблица Orders, которая имеет отдельные ссылки на CustomerNo и ProductNo, плюс поле для даты. Вам также понадобится первичный ключ с автоинкрементом для таблицы, тогда вы можете использовать силу SQL и индексы (индексы?) Для любых запросов.

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

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