В SQL как увеличить идентификатор как это: client1, client2, client3 - PullRequest
2 голосов
/ 23 ноября 2010

Я хотел бы услышать несколько советов по проектированию таблиц в этой базе данных ...

Допустим, у меня есть 3 стола: рубашки, брюки и обувь

Все они имеют одинаковые поля: имя, описание, производство, материал и идентификатор Я не могу просто поставить идентификаторы как 1, 2, 3, 4 для каждого из них, поэтому я решил записать: рубашка001, рубашка002, брюки001, брюки002, брюки003 и так далее. Я знаю, что это неправильный способ его разработки, поэтому я должен просто объединить его в одну большую таблицу и иметь поля «Имя», «Описание», «Производство», «Материал», «Идентификатор» и дополнительное поле «Тип»?

Ответы [ 3 ]

3 голосов
/ 23 ноября 2010

Да, вы должны создать одну таблицу базы данных, которая определяет все различные продукты:

Table:   Product 
Columns: ID (pk, identity),
         ProductTypeID (fk to ProductType table),
         Name,
         Description, 
         Manufacture,
         Material

Table:   ProductType
Columns: ID (pk, identity),
         Name,
         Description
0 голосов
/ 23 ноября 2010

Да, поместите его в одну таблицу с иностранным ключом TypeID, который ссылается на таблицу ItemTypes.

0 голосов
/ 23 ноября 2010

РЕДАКТИРОВАТЬ: MySQL добавлен в конец ответа

Дизайн базы данных, которую вы цитируете, не соответствует первой нормальной форме (1NF).

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

Table: Item
       Id          (int, auto-increment) [PrimaryKey]
       FkTypeId    (int) [ForeignKey]
       Name        (string)
       Description (string)
       Material    (string)
       Manufacture (string)

Table: Type
       Id          (int, auto-incrememnt) [PrimaryKey]
       Name        (string)

Теперь вы можете вставлять ваши типы в таблицу типов (рубашка, штаны), Чистка и т. Д.) И ассоциируйте каждый элемент с соответствующим типом.

Вот страница википедии в первой нормальной форме, которую вы должны стараться придерживаться в любом дизайне базы данных: http://en.wikipedia.org/wiki/First_normal_form

Вот MySQL-версия моего предложения:

ПРИМЕЧАНИЕ. ЭТО РАБОТАЕТ В MyISAM

CREATE TABLE ProductType (
  Id INTEGER UNSIGNED  NOT NULL   AUTO_INCREMENT,
  Name VARCHAR  NOT NULL    ,
PRIMARY KEY(Id));


CREATE TABLE Product (
  Id INTEGER UNSIGNED  NOT NULL   AUTO_INCREMENT,
  ProductType_Id INTEGER UNSIGNED  NOT NULL  ,
  FkTypeId INTEGER UNSIGNED  NOT NULL  ,
  Name VARCHAR  NOT NULL  ,
  Description VARCHAR  NOT NULL  ,
  Material VARCHAR  NULL  ,
  Manufacturer VARCHAR  NULL    ,
PRIMARY KEY(Id, ProductType_Id)  ,
INDEX Product_FKIndex1(ProductType_Id),
  FOREIGN KEY(ProductType_Id)
    REFERENCES ProductType(Id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION);

Надеюсь, это поможет.

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