SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 10.11.2007 16:06:51

Irbis
Участник
Зарегистрирован: 10.11.2007
Сообщений: 2

Можно ли сделать ID один на всю базу?

такая задача: есть несколько типов продуктов (проц. платы, контроллеры, блоки питания), для каждого своя таблица. Можно ли сделать так, чтобы при вбивании новых позиций каждому продукту присваивался свой персональные ID? Не в рамках одной таблицы, а в рамках всей базы.

Или нужно делать отдельную таблицу, связывающую ID и сам продукт и его тип?

Отредактированно Irbis (10.11.2007 16:07:29)

Неактивен

 

#2 10.11.2007 16:43:48

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 845

Re: Можно ли сделать ID один на всю базу?

А почему бы не сделать одну таблицу для всех продуктов, в которой будут хранится id и номер типа, и еще одну - для типов продуктов? Например, так:

CREATE TABLE products (
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
typeid INT,
-- здесь еще какие-нибудь поля, если нужны
KEY (typeid)
);

CREATE TABLE types (
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
type VARCHAR(255) NOT NULL DEFAULT ''
);


Кроме того, возможно, было бы удобно связать столбецы products.typeid и types.id внешним ключом (что-нибудь типа ON UPDATE CASCADE ON DELETE SET NULL).
В таком случае при создании таблиц не забудьте указать ENGINE = InnoDB

Неактивен

 

#3 19.11.2007 01:20:12

Irbis
Участник
Зарегистрирован: 10.11.2007
Сообщений: 2

Re: Можно ли сделать ID один на всю базу?

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

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson