Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Primary key не integer / 25 сообщений из 61, страница 1 из 3
18.12.2009, 15:29
    #36374090
Who am I
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Primary key не integer
Хотелось бы услышать аргументы о том, насколько плохо и плохо ли вообще делать primary key не числовым.

Допустим, есть сущность. В моем случае это филиал банка.

Я знаю наверняка что у филиала есть четырехсимвольный id. Например 0000 или 0001.

Что мне мешает сделать char(4) и сделать его primary key?

Какие у этого решения минусы?

Меня всегда напрягало создание дополнительного "ненужного" id, когда есть уникальное поле.
...
Рейтинг: 0 / 0
18.12.2009, 15:35
    #36374106
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Primary key не integer
а меня не напрягает
но я не против вашей мысли
лишь бы уникальное не перестало быть таковым однажды
С уважением, Naf
...
Рейтинг: 0 / 0
18.12.2009, 15:37
    #36374113
Who am I
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Primary key не integer
Вопрос с ходу: всегда ли нужен primary key? Я видел ситуации, когда наличие pk в таблице было просто бессмысленным.
...
Рейтинг: 0 / 0
18.12.2009, 15:41
    #36374131
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Primary key не integer
Who am IВопрос с ходу: всегда ли нужен primary key? Я видел ситуации, когда наличие pk в таблице было просто бессмысленным.возможно да, например для таблиц служащих отношением многие-ко-многим
но и такие таблицы могут "превратится в сущности", но редко
...
Рейтинг: 0 / 0
18.12.2009, 15:45
    #36374145
Who am I
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Primary key не integer
Nafа меня не напрягает
но я не против вашей мысли
лишь бы уникальное не перестало быть таковым однажды
С уважением, Naf

В таком случае в качестве ID можно взять то, что на текущий момент в таблице объявлено unique, а id вообще выкинуть.

Аргументы против?
...
Рейтинг: 0 / 0
18.12.2009, 16:20
    #36374273
an0nym
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Primary key не integer
Who am IХотелось бы услышать аргументы о том, насколько плохо и плохо ли вообще делать primary key не числовым.

Допустим, есть сущность. В моем случае это филиал банка.

Я знаю наверняка что у филиала есть четырехсимвольный id. Например 0000 или 0001.

Что мне мешает сделать char(4) и сделать его primary key?

Какие у этого решения минусы?

Меня всегда напрягало создание дополнительного "ненужного" id, когда есть уникальное поле.
CHAR(4) - ничего не мешает, VARCHAR(255) - мешает то что это огромное поле придется везде за собой таскать.

В таблице многие ко многим PKем и является (id_entity1, id_entity2), ИМХО.
...
Рейтинг: 0 / 0
18.12.2009, 16:24
    #36374286
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Primary key не integer
Who am INafа меня не напрягает
но я не против вашей мысли
лишь бы уникальное не перестало быть таковым однажды
С уважением, Naf

В таком случае в качестве ID можно взять то, что на текущий момент в таблице объявлено unique, а id вообще выкинуть.

Аргументы против?как и говорил, может стать однажды не уникальным или измениться, от ситуации зависит
это известный спор Естественные и суррогатные ключи
...
Рейтинг: 0 / 0
18.12.2009, 16:29
    #36374306
mcureenab
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Primary key не integer
Нужно понимать, что зачастую БД не является первичным регистром, а лишь отражает состояние некой внешней системы, в которой могут быть исключения из правил. А PK не терпит никаких исключений.

В объектных БД каждая запись в БД имеет уникальный ID объекта независимо от наличия PK на таблице. Это современная тенденция.
...
Рейтинг: 0 / 0
18.12.2009, 17:05
    #36374434
LSV
LSV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Primary key не integer
Who am IВопрос с ходу: всегда ли нужен primary key? Я видел ситуации, когда наличие pk в таблице было просто бессмысленным.Бессмысленно платить зарплату таким горе-архитекторам
...
Рейтинг: 0 / 0
18.12.2009, 17:26
    #36374494
Who am I
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Primary key не integer
LSVWho am IВопрос с ходу: всегда ли нужен primary key? Я видел ситуации, когда наличие pk в таблице было просто бессмысленным.Бессмысленно платить зарплату таким горе-архитекторам

Отличный аргумент, только бесполезный.

Максимум что вы здесь сделали, это попытку поднять свое эго за счет принижений качеств другого человека. =)

Может быть все же вернемся к конструктивному разговору?
...
Рейтинг: 0 / 0
18.12.2009, 17:47
    #36374540
mcureenab
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Primary key не integer
Если бы PK был обязательным, в запросе CREATE TABLE вам бы пришлось всегда указывать PK. Если PK не нужен, не делай его.
...
Рейтинг: 0 / 0
18.12.2009, 17:58
    #36374568
ОКТОГЕН
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Primary key не integer
использовую UUID.
Вполне себе хороший идентификатор.
...
Рейтинг: 0 / 0
18.12.2009, 20:28
    #36374857
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Primary key не integer
Who am I wrote:
> Хотелось бы услышать аргументы о том, насколько плохо и плохо ли вообще
> делать primary key не числовым.

Ни плохо, и ни хорошо. Равнозначно с числовыми идентификаторами.
На самом деле пофигу, какой идентификатор, главное, чтобы он
был уникальными. (специфики конкретных СУБД тут мы не рассматриваем).

> Какие у этого решения минусы?

по большому счёту, никаких.

> Меня всегда напрягало создание дополнительного "ненужного" id, когда
> есть уникальное поле.

В общем, правильно напрягало, если конечно это ДЕЙСТВИТЕЛЬНО уникальное
поле.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
18.12.2009, 21:05
    #36374893
guest_20040621
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Primary key не integer
> насколько плохо и плохо ли вообще делать primary key не числовым.

Теоретически тип данных не играет роли. Практически - компактнее и проще оперировать числами.

> Я знаю наверняка что у филиала есть четырехсимвольный id.

Типичная ошибка. Вы можете что-то знать только о данных, источник которых контролируете. Если где-то в какой-то другой базе данных некие данные имеют какой-то идентификатор, то в своей базе данных вы можете использовать этот идентификатор только и исключительно в виде <источник данных>...<идентификатор экземпляра>...<дата регистрации>.
...
Рейтинг: 0 / 0
18.12.2009, 21:55
    #36374925
eNose
Участник
[не активирован]
[не одобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Primary key не integer
Who am IАргументы против? унифицировав имя pk и введя его в ранг обязательных в любых таблицах, вы облегчаете вашим последователям понимание вашего кода.
...
Рейтинг: 0 / 0
18.12.2009, 21:56
    #36374926
eNose
Участник
[не активирован]
[не одобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Primary key не integer
да, и при написании запросов не надо думать "а с чем связать?"
...
Рейтинг: 0 / 0
18.12.2009, 21:57
    #36374927
eNose
Участник
[не активирован]
[не одобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Primary key не integer
Who am IЯ знаю наверняка что у филиала есть четырехсимвольный id. Например 0000 или 0001. сегодня это так, но где гарантия что так же будет и завтра?
...
Рейтинг: 0 / 0
18.12.2009, 22:03
    #36374937
Vika Vinner
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Primary key не integer
ОКТОГЕНиспользовую UUID.
Вполне себе хороший идентификатор.

Вот чтобы я не делала точно - так это назначала GUID (UUID) ключом в VLDB. На одной колоночке в 6,000,000++ строк только ключ занял 650 GB.... а мог быть всего 150 GB.... Дорого...
...
Рейтинг: 0 / 0
18.12.2009, 22:14
    #36374945
eNose
Участник
[не активирован]
[не одобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Primary key не integer
Vika VinnerВот чтобы я не делала точно - так это назначала GUID (UUID) ключом в VLDB. На одной колоночке в 6,000,000++ строк только ключ занял 650 GB.... а мог быть всего 150 GB.... Дорого... можно узнать формулу, по которой считали?
...
Рейтинг: 0 / 0
18.12.2009, 22:17
    #36374947
Vika Vinner
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Primary key не integer
eNoseможно узнать формулу, по которой считали?

Что - деньги или поле-размер? :)
...
Рейтинг: 0 / 0
18.12.2009, 22:31
    #36374953
eNose
Участник
[не активирован]
[не одобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Primary key не integer
Vika VinnereNoseможно узнать формулу, по которой считали?

Что - деньги или поле-размер? :) вот это:

GUID (UUID) ключ на одной колоночке в 6,000,000++ строк только занял 650 GB
...
Рейтинг: 0 / 0
18.12.2009, 22:41
    #36374960
Vika Vinner
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Primary key не integer
Коллега, снимите свой вопрос... Не к лицу..
...
Рейтинг: 0 / 0
18.12.2009, 22:47
    #36374968
eNose
Участник
[не активирован]
[не одобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Primary key не integer
Vika Vinner,

"++" - это еще два раза по "000"?
...
Рейтинг: 0 / 0
18.12.2009, 22:49
    #36374971
Vika Vinner
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Primary key не integer
нет это ещё десять баз данных куда это всё реплицировалось ...
...
Рейтинг: 0 / 0
18.12.2009, 22:51
    #36374975
eNose
Участник
[не активирован]
[не одобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Primary key не integer
697,932,185,600/16 = 43,620,761,600
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Primary key не integer / 25 сообщений из 61, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]