Модераторы: skyboy

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> База данных Заказ 
:(
    Опции темы
Toohtik
Дата 1.2.2007, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 142
Регистрация: 30.1.2006
Где: Харьков

Репутация: нет
Всего: нет



Необходимо написать базу данных Заказов. В ней содержится 3 таблицы:
1.Таблица(Заказ)        2.Таблица(Заказчик)        3.Таблица (статус)
    1.N                               1.N                                    1.N
    2.Заказчик                   2.Имя                                2.Состояние
    3.Вид заказа                3.Телефон
    4.Статус заказа           4.адрес
    5.стоимость                  5.login
                                         6.password

Причем 3.2 известно, т.е. уже известны названия полей(Новый, У дизайнера, В печати, Готов)

Таблица Заказ «главная» необходимо чтоб при добавлении нового заказа происходило авто заполнение пунктов 1.2 1.4, те данные брались из 2х других таблиц. Как я понимаю все пункты 1 надо сделать первичными ключами связать эти 3 таблицы. Как произвести связь таблиц? 
Какие вообще будут предложения и пожелания:-)

Заранее спасибо.  



Это сообщение отредактировал(а) Toohtik - 1.2.2007, 19:50
PM ICQ   Вверх
comtat
Дата 1.2.2007, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

Репутация: 1
Всего: 71



Цитата(Toohtik @  1.2.2007,  19:47 Найти цитируемый пост)
Какие вообще будут предложения и пожелания:-)

Состояние нужно будет выдельть в отдельную таблицу

И скажу БД, какая (InterBase, Mysql, Access, ....) ?



--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
Akina
Дата 1.2.2007, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Достаточно 2 таблиц - заказы и заказчики. Статус, состояние и пр. могут быть полем с заданным набором значений или свободно-запоняемыми...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Toohtik
Дата 1.2.2007, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 142
Регистрация: 30.1.2006
Где: Харьков

Репутация: нет
Всего: нет



Я использую MySQL. Я наверное не так выразился. В таблице статус хранятся значения(Новый, У дизайнера, В печати, Готов). Т.е. статус я уже вынес в отдельную таблицу

Akina интересная идея...

Как я понимаю все пункты 1 надо сделать первичными ключами связать эти 3 таблицы. Как произвести связь таблиц?

Что насчет этого скажите? 

Это сообщение отредактировал(а) Toohtik - 1.2.2007, 23:06
PM ICQ   Вверх
LSD
Дата 2.2.2007, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: нет
Всего: 538




M
LSD
Перенесено из баз данных



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Toohtik
Дата 2.2.2007, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 142
Регистрация: 30.1.2006
Где: Харьков

Репутация: нет
Всего: нет



Таблица №1 (Заказ)
    1.№ (уникальный индекс)(ключевое)
    2.Заказчик
    3.Вид заказа
    4.Статус заказа(новый, в печати…)
    5.Сумма заказа
    6.Внешний ключ

Таблица №2 (Заказчик)
    1.(ключевое)(уникальный индекс)
    2.Имя
    3.Телефон
    4.Адрес
    5.login(уникальное)
    6.password

Связь один ко многим, по полю 1.6 с 2.1
Все-таки я решил сделать 2 таблицы, а поле 1.4 будит иметь фиксированные значения.

PS это моя первая БД, но просьба судить строго! 

PM ICQ   Вверх
Rodman
Дата 2.2.2007, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: нет
Всего: 122



Таблица №1 (Заказ)
    1.№ (уникальный индекс)(ключевое)
    2.Заказчик (INT)
    3.Вид заказа  (VARCHAR)
    4.Статус заказа (новый, в печати…)
    5.Сумма заказа (FLOAT)
    6.Внешний ключ  (pачем???)

Таблица №2 (Заказчик)
    1.(ключевое)(уникальный индекс)
    2.Имя  (VARCHAR)
    3.Телефон (VARCHAR)
    4.Адрес (VARCHAR)
    5.login(уникальное) (VARCHAR)
    6.password (VARCHAR)

связь будет происходит через 1,2 - 2,1

Добавлено @ 12:39 
пункт 1,6 - не нужен
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Toohtik
Дата 2.2.2007, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 142
Регистрация: 30.1.2006
Где: Харьков

Репутация: нет
Всего: нет



Целесобразно ли тут 1.1 делать ключевым?
PM ICQ   Вверх
Akina
Дата 2.2.2007, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Цитата(Toohtik @  2.2.2007,  14:03 Найти цитируемый пост)
Целесобразно ли тут 1.1 делать ключевым? 

Каждая таблица обязана иметь ключевое поле-счетчик. Отклонение от этого правила должно быть слишком обосновано. Как правило, достаточно тривиального constraint


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
muzer
Дата 2.2.2007, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 387
Регистрация: 31.8.2006

Репутация: 30
Всего: 31



Цитата(Akina @  2.2.2007,  14:31 Найти цитируемый пост)
Каждая таблица обязана иметь ключевое поле-счетчик.

это неверное утверждение.
1. таблица не обязана иметь поле-счетчик, причём очень часто (~ 50%) она его и не имеет.
2. уникальное ключевое поле могут не иметь таблицы, служащие для связи других таблиц.
PM WWW   Вверх
Akina
Дата 2.2.2007, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



muzer, я же сказал - отсутствие должно быть серьезно обосновано. Логикой. Или требованием компактности. Или иной действительно существенной причиной.

Но как правило его отсутствие обосновывают как угодно, лишь бы не указать истинную причину - лень.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Toohtik
Дата 2.2.2007, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 142
Регистрация: 30.1.2006
Где: Харьков

Репутация: нет
Всего: нет



Запрос по идеи должен быть таким:
Код

Create table Order(
    Id int auto_increment primary key,
    Customer int,
    Zakaz varchar(250),
    Status enum(‘Новый’,’У дизайнера’,’В печати’,’Готов’) default ‘Новый’,
    Sum float);

Create table Customer(
    Id int auto_increment unique references Order(Customer),
    Name varchar(100),
         Phone varchar(20),
         Address varchar(50),
         Login varchar (50) unique,
         Password varchar(50),
         Create unique index ID on Customer(Id));

Записал я это все в файл main.sql и пытаюсь исполнить командой \. main.sql. Вот что выдает:



Это сообщение отредактировал(а) Toohtik - 2.2.2007, 20:50

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  picture.JPG 37,93 Kb
PM ICQ   Вверх
muzer
Дата 2.2.2007, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 387
Регистрация: 31.8.2006

Репутация: 30
Всего: 31



Toohtik, вот они последствия работы с гуём, обсуждаемые в соседней ветке smile

нужно не так:

Код

Create table Order(
    Id int auto_increment primary key,
    Customer int,
    Zakaz varchar(250),
    Status enum(‘Новый’,’У дизайнера’,’В печати’,’Готов’) default ‘Новый’,
    Sum float
);


а так:

Код

Create table Order(
    Id int auto_increment,
    Customer int,
    Zakaz varchar(250),
    Status enum(‘Новый’,’У дизайнера’,’В печати’,’Готов’) default ‘Новый’,
    Sum float,
    PRIMARY KEY (Id)
);


аналогично со второй таблицей, все ключи - в конец
PM WWW   Вверх
Toohtik
Дата 2.2.2007, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 142
Регистрация: 30.1.2006
Где: Харьков

Репутация: нет
Всего: нет



Все равно не получаетсяsmile можноб было и без гуя но как в консоли записать русскими буквами Новый У дизайнера...
PM ICQ   Вверх
muzer
Дата 2.2.2007, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 387
Регистрация: 31.8.2006

Репутация: 30
Всего: 31



Sum - ключевое слово, его надо в кавычки, только не простые, а те которые под русской "ё" в английской раскладке.

PM WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0614 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.