Покинул форум
Сообщений всего: 282
Дата рег-ции: Янв. 2007 Откуда: Сухиничи Калуж.обл.
Помог: 0 раз(а)
[+]
Подскажите пожалуйста, как происходит связь полей в базе данных mysql? Например в ms access всё понятно, зацепил мышкой одно поле прицепил его к другой (в схеме данных), а как подобное сделать в mysql? какие типы таблиц можно подобным образом связывать? как можно посмотреть какие таблицы и поля связаны?
----- ..я не специалист, а только учусь
evgenijj
Отправлено: 31 Марта, 2007 - 00:47:00
Участник
Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006 Откуда: Москва
Помог: 10 раз(а)
Это называется внешние ключи FOREIGN KEY
Пусть есть две таблицы - customers (покупатели) и orders (заказы)
CREATE TABLE `customers` (
`cust_id` int(11) NOT NULL auto_increment,
`cust_name` char(50) NOT NULL,
`cust_address` char(255) default NULL,
`cust_email` char(50) default NULL,
PRIMARY KEY (`cust_id`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;
CREATE TABLE `orders` (
`order_num` int(11) NOT NULL auto_increment,
`order_date` datetime NOT NULL default CURRENT_TIMESTAMP,
`cust_id` int(11) NOT NULL,
PRIMARY KEY (`order_num`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;
Каждый заказ в таблице orders имеет ссылку на уникальный идентификатор покупателя cust_id в таблице customers
Есть смысл добавить внешний ключ для таблицы orders
ALTER TABLE `orders`
ADD CONSTRAINT `FK_Orders_Customers` FOREIGN KEY (`cust_id`) REFERENCES `customers` (`cust_id`);
Покинул форум
Сообщений всего: 282
Дата рег-ции: Янв. 2007 Откуда: Сухиничи Калуж.обл.
Помог: 0 раз(а)
[+]
Спасибо за ответ. Я читал в книге про внешние ключи, а что означает то, что только таблицы InnoDB поддерживают внешние ключи? Другие таблицы внешние ключи не поддерживают, тогда как с ними работать? А можно ли сначала создать сами таблицы, а потом их связи?
----- ..я не специалист, а только учусь
evgenijj
Отправлено: 31 Марта, 2007 - 14:07:52
Участник
Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006 Откуда: Москва
Помог: 10 раз(а)
Mister пишет:
Другие таблицы внешние ключи не поддерживают, тогда как с ними работать?
Ждем выхода новых версий MySQL или работаем с другой БД.
Mister пишет:
А можно ли сначала создать сами таблицы, а потом их связи?
Можно задавать ключи как при создании таблиц, так и позднее с помощью ALTER TABLE
Покинул форум
Сообщений всего: 615
Дата рег-ции: Июль 2006 Откуда: Оттуда !
Помог: 0 раз(а)
Сомневаюсь что начнут переходить на другие БД. MySQL всетаки быстрее и удобнее нежели остальные, + бесплатная.
Mister
Отправлено: 01 Апреля, 2007 - 06:57:36
Посетитель
Покинул форум
Сообщений всего: 282
Дата рег-ции: Янв. 2007 Откуда: Сухиничи Калуж.обл.
Помог: 0 раз(а)
[+]
Т.е. например при создании БД с использованием таблиц MySAM, можно использовать только одну таблицу, а связывать их нельзя?
А можно ли в одной БД использовать несколько разных таблиц, т.е. не содержащих связную информацию, например таблица содержащая сведения о к.-л. посетителях, таблица с гостевой книгой и закзами интернет-магазина?
----- ..я не специалист, а только учусь
evgenijj
Отправлено: 01 Апреля, 2007 - 09:31:33
Участник
Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006 Откуда: Москва
Помог: 10 раз(а)
Mister пишет:
Т.е. например при создании БД с использованием таблиц MyISAM ... связывать их нельзя?
Нельзя
Mister пишет:
А можно ли в одной БД использовать несколько разных типов таблиц?
Покинул форум
Сообщений всего: 282
Дата рег-ции: Янв. 2007 Откуда: Сухиничи Калуж.обл.
Помог: 0 раз(а)
[+]
В общем для построение полноценной базы данных как ms access можно использовать только InnoDB (со всеми связями)? А остальные таблицы можно использовать для построения не очень больших баз данных?
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.