У меня есть вопросы по выбору первичного ключа таблицы.
предположим, что у нас есть 3 связанные таблицы, как описано ниже:
TBL_A
{
'A1' varchar (64), // assume this is the unique attribute.
'A2' varchar (64),
}
TBL_B
{
'B1' varchar (64), // assume this is the unique attribute.
'B2' varchar (64),
}
TBL_C
{
'C1' varchar (64), // assume this is the unique attribute.
'C2' varchar (64),
}
Отношения:
- между TBL_A и TBL_B как многие ко многим,
- между TBL_AB и TBL_C от ОДИН до МНОГО
вопросы:
какой из них лучше: ОПЦИЯ A: установить уникальный атрибут каждой таблицы в качестве первичного ключа таблицы? или ОПЦИЯ B: создайте другой атрибут, который будет идентификатором (автоматический номер), и установите уникальный атрибут таблицы с уникальным ограничением. (будет применяться ко всем этим трем таблицам).
тогда TBL_AB необходимо будет скопировать первичный ключ из TBL_A и TBL_B в качестве ссылочного ключа. вопрос снова похож на мой предыдущий, должны ли мы оставить эти два ссылочных ключа первичным ключом TBL_AB? или гораздо лучше создать новый уникальный атрибут (автоматический номер), который будет первичным ключом TBL_AB, и сделать два ссылочных атрибута с уникальным ограничением.?
, поскольку od TBL_C будет ссылаться на первичный ключ TBL_AB, конечно, вступит в силу опция, которую мы выбрали в двух предыдущих вопросах. Если мы выберем первый вариант, будет два атрибута, на которые есть ссылки, но если мы выберем второй вариант, у нас будет только один атрибут, на который есть ссылки. как ты думаешь.?
идея в том, что когда мы находимся в ситуации поиска, запрос первичного ключа целочисленного (или числового) типа будет выполняться быстрее, чем первичного ключа типа varchar,?
какой из них лучше,.? и, конечно, если у вас есть «почему»,
спасибо за каждый ответ и предложение.
С уважением,