2016-09-08 3 views
0

Рассмотрим мы имеем один SQL таблицы клиентов enter image description hereSql создания таблицы без использования внешнего ключа

Рассмотрим теперь, если у нас есть таблица, где их две колонки customer_name и orders_name Теперь один клиент может иметь несколько заказов (один-ко-многим) Итак, у нас есть таблица, в которой мы выбираем имя_пользователя как ключ foriegn. Но теперь рассмотрим, что у нас есть 100 заказов одному клиенту, поэтому мы должны написать одно и то же имя_пользователя 100 раз. талии памяти.

customer_name,customer_orders стол

enter image description here
так я думал, это мы просто не можем сделать таблицу с именем CUSTOMER_NAME заказов, для нелогич-, если у нас есть счет CUSTOMER_NAME поэтому мы можем создать таблицу с именем заказов законопроекта и написать все свои заказы в этом, теперь мы не используем любой foriegn ключ,

bill's orders таблица

enter image description here

и другие таблицы, которые мы можем создать для других пользователей, так, как можно удалить таблицу, когда мы удалим это имя customer_name из главной таблицы. Есть идеи?

+0

НЕТ НЕТ НЕТ и еще раз нет – RiggsFolly

+0

Если вы хотите увидеть счета заказы не запрос таблицы Orders, где = ЗАКАЗЧИК законопроект " – RiggsFolly

+0

Если нет другой (дизайна причины базы данных), чем если у вас есть 10000 клиентов, вы будете иметь 10000 таблиц – RiggsFolly

ответ

2

Вы решаете проблему впустую пространства, используя суррогатные ключи. Вместо копирования огромного алфавитно-цифрового поля (имен) в дочерние таблицы вы должны создать идентификатор сортировки с использованием более компактного типа данных (byteint, smallint, int и т. Д.). В подходе вы предлагаете, где вы создаете отдельную таблицу для каждого клиента, вы будете работать в следующих вопросах:

  • не могут работать агрегаты через клиентов, то есть, вы не можете просто сделать сумму, в среднем, мин и т.д. для наборов клиентов, нарезающих данные разными способами.
  • SQL будет намного сложнее с каждым добавочным клиентом, добавленным к запросам
  • Ваш словарь данных будет расти огромным, и в какой-то момент вы столкнетесь с серьезными проблемами производительности, которые не являются легко исправить

По int использования реляционной базы данных позволяет пользователям динамически распределять и копировать данные. Метод, который вы предлагаете, не будет полезен для запросов.

Смежные вопросы