Использование первичных ключей GUID и первичных ключей с автоматическим приращением в разных таблицах одной и той же БД - PullRequest
0 голосов
/ 28 июля 2011

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

--------------------------------
Client ID   |   Name   |   Phone   |   Address  |  City  |  State  |  Zip  
________________________________

Где идентификатор клиента является первичным ключом GUID.

Моя таблица счетов выглядит примерно так:

--------------------------------
Invoice ID   |   Client ID   |   Date/Time   |   Price    
________________________________

ГдеИдентификатор счета-фактуры будет представлять собой число (начиная, скажем, с 1000) и с автоматическим увеличением на 1.

Это нормально или плохая практика?Я просто не хочу, чтобы мои счета распечатывались со счетом # 336868de-7778-41fc-ae7f-662f76d5615a....

Ответы [ 3 ]

4 голосов
/ 28 июля 2011

Лично я не вижу причины использовать GUID - если мне нужно что-то автоматически сгенерированное, это идентичность.Поэтому, чтобы ответить на ваш вопрос, это прекрасно.И, как прокомментировал Мартин, я хотел бы также использовать автоматический номер для идентификаторов ваших клиентов.

1 голос
/ 28 июля 2011

В общем, я не думаю, что есть что-то не так с разными типами данных для разных идентификационных номеров.

Я делаю думаю, что вы, возможно, захотите пересмотреть номер автоинкремента для счетов-фактур. Я не думаю, что какая-либо платформа гарантирует, что идентификаторы автоинкремента будут без пробелов.

Единственное, что бухгалтеры ненавидят хуже, чем пропуски, - это пропуски без поддержки документации, и это то, что вы собираетесь получить. (Конечно, пробел, в котором есть подтверждающая документация, на самом деле не пробел, потому что вы можете учесть все цифры.)

0 голосов
/ 28 июля 2011

Первичные ключи GUID имеют смысл, если есть реальная вероятность, что вы перенесете таблицу в другую базу данных. Если вы чувствуете, что это верно для Клиента, но не для Счета-фактуры, то я не вижу проблемы в двух разных типах ключей. Однако, глядя на ваш конкретный пример, Invoice и Client могут быть портированы вместе, поскольку существует зависимость. В этом случае вы, вероятно, должны иметь одинаковый тип первичного ключа для обеих таблиц.

...