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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проверьте мой SQL код (создание бд) 
:(
    Опции темы
delphi_
Дата 25.5.2011, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



элементарный пример бд http://s002.radikal.ru/i200/1105/4a/454575a53152.png


правильно ли я делаю в постгресе (код выдает power arhitect) - меня интересует создание связей - как я
понимаю он делает соединение по индексам (?) - но все спорные поля я специально сделал латинскими,и все равно он откуда-то
берет кириллицу для создания связей.вопрос-откуда?

нужно для диплома,после аксеса как-то все непривычно (после легких пассов руками в редакторе схемы тамошней)

Код



CREATE TABLE public.Родственные связи (
                ID_rodstv_svyaz INTEGER NOT NULL,
                Наим_родств_связей VARCHAR NOT NULL,
                CONSTRAINT rpdstvenniesvyziindex PRIMARY KEY (ID_rodstv_svyaz)
);


CREATE TABLE public.Главная (
                ID_man INTEGER NOT NULL,
                Имя VARCHAR NOT NULL,
                Фамилия VARCHAR NOT NULL,
                Отчество VARCHAR NOT NULL,
                Дата_рождения DATE NOT NULL,
                Улица VARCHAR NOT NULL,
                Дом INTEGER NOT NULL,
                Строение INTEGER NOT NULL,
                Этаж INTEGER NOT NULL,
                Серия_паспорта INTEGER NOT NULL,
                Номер_паспорта INTEGER NOT NULL,
                Квартира_в_собств BOOLEAN NOT NULL,
                Выдан VARCHAR NOT NULL,
                Кем_Выдан VARCHAR NOT NULL,
                Когда_выдан DATE NOT NULL,
                Инвалидность VARCHAR NOT NULL,
                Пенс_удостоверение INTEGER NOT NULL,
                Дата_оформления DATE NOT NULL,
                CONSTRAINT glavnaya_index PRIMARY KEY (ID_man) 


CREATE TABLE public.Родственники (
                ID_zapisi_rodstv INTEGER NOT NULL,
                ID_rodstv_svyaz INTEGER NOT NULL,
                ID_man INTEGER NOT NULL,
                Фамилия VARCHAR NOT NULL,
                Имя VARCHAR NOT NULL,
                Отчество VARCHAR NOT NULL,
                CONSTRAINT rodstvenniki_index PRIMARY KEY (ID_zapisi_rodstv)
);


ALTER TABLE public.Родственники ADD CONSTRAINT _______________________________fk   откуда тут кириллица?
FOREIGN KEY (ID_rodstv_svyaz)
REFERENCES public.Родственные связи (ID_rodstv_svyaz)
ON DELETE NO ACTION
ON UPDATE NO ACTION
NOT DEFERRABLE;

ALTER TABLE public.Родственники ADD CONSTRAINT _____________________fk  откуда тут кириллица2?
FOREIGN KEY (ID_man)
REFERENCES public.Главная (ID_man)
ON DELETE NO ACTION
ON UPDATE NO ACTION
NOT DEFERRABLE;

PM MAIL   Вверх
LSD
Дата 26.5.2011, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


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

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



Цитата(delphi_ @  25.5.2011,  21:01 Найти цитируемый пост)
правильно ли я делаю в постгресе

Неправильно. Все названия только таблиц, колонок и т.д. только латиницей, никаких исключений smile 


--------------------
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   Вверх
delphi_
Дата 26.5.2011, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



верно,попробую на простом примере

3 таблицы-  главная,машины,цвета

человек может иметь МНОГО машин,машина может иметь только ОДИН ЦВЕТ

вот такая вот схема

http://s55.radikal.ru/i147/1105/bf/b8b7776c8942.png

Код

CREATE TABLE color
(
  color_id integer,
  color_name text,
  PRIMARY KEY (color_id)
);
CREATE TABLE cars
(
  id_zapisi integer,
  id_man integer,
  car_model text,
  color_id text,
  PRIMARY KEY (id_zapisi)
);
CREATE TABLE main
(
  id_man integer,
  name text,
  surname serial,
  adress text,
  PRIMARY KEY (id_man)



верно ли я мыслю? можно ли соединять id_man в таблицах и color_id ? программа мне этого сделать не дает.проблемы в логике? в access+.net все 100% пашет на аналогичном примере

Это сообщение отредактировал(а) delphi_ - 26.5.2011, 12:22
PM MAIL   Вверх
LSD
Дата 26.5.2011, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


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

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



Цитата(delphi_ @  26.5.2011,  13:21 Найти цитируемый пост)
можно ли соединять id_man в таблицах и color_id ?

Что значит "соединять" join?


--------------------
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   Вверх
delphi_
Дата 26.5.2011, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



имею ввиду создать связи один-ко-многим
PM MAIL   Вверх
Akina
Дата 26.5.2011, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Уж не хочешь ли ты создать два FK из разных таблиц на одно и то же поле?


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

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


Leprechaun Software Developer
****


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

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



Цитата(delphi_ @  26.5.2011,  13:44 Найти цитируемый пост)
имею ввиду создать связи один-ко-многим 

Связь один-ко-многим не создается таким образом. Тебе нужно в child таблицу добавить поле которое будет ссылаться на parent таблицу. PK->PK это только один-к-одному связь.


--------------------
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   Вверх
delphi_
Дата 4.6.2011, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



да,там я чегой-то напутал.вполне все ок работало,но сейчас получил еще более странную проблему для меня...


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

скрин схемы для наглядности http://i043.radikal.ru/1106/28/62c4ff4cad3e.png


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

главная
Код


CREATE TABLE public."Главная" (
  "ID_человека" INTEGER NOT NULL, 
  "Имя" TEXT, 
  "Фамилия" TEXT, 
  "Отчество" TEXT, 
  "Дата_рождения" DATE, 
  .................
  
  CONSTRAINT "Главная_pkey" PRIMARY KEY("ID_человека")


родственники

Код


CREATE TABLE public."Родственники" (
  "ID_записи_родственники" INTEGER NOT NULL, 
  "ID_человека" INTEGER, 
  "Фамилия" TEXT, 
  "Имя" TEXT, 
  "Отчество" TEXT, 
  "ID_тип_родственника" SMALLINT, 
  CONSTRAINT "Родственники_pkey" PRIMARY KEY("ID_записи_родственники"), 
  CONSTRAINT "Родственники_fk" FOREIGN KEY ("ID_человека")
    REFERENCES public."Главная"("ID_человека")
    ON DELETE CASCADE
    ON UPDATE CASCADE
    NOT DEFERRABLE, 
  CONSTRAINT "Родственники_fk1" FOREIGN KEY ("ID_тип_родственника")
    REFERENCES public."Служебная_родственники"("ID_тип_родственника")
    ON DELETE CASCADE
    ON UPDATE CASCADE
    NOT DEFERRABLE
) WITHOUT OIDS;



Служебная_родственники

Код


CREATE TABLE public."Служебная_родственники" (
  "ID_тип_родственника" SMALLINT NOT NULL, 
  "Тип_родственных_связей" TEXT, 
  CONSTRAINT "Служебная_родственники_pkey" PRIMARY KEY("ID_тип_родственника")
) WITHOUT OIDS;




проблема вот в чем- через ODBC я успешно вывожу и обновляю данные (!!!) в приложении, НО я не могу выполнить элементарный запрос к базе

Код

SELECT     "ID_человека", Имя  FROM Главная


ошибка -> ERROR: relation "public.главная" does not exist
LINE 1: SELECT "ID_человека", Имя FROM "public".Главная

зачем ему нужно relation ? что я неправильно сделал?

PM MAIL   Вверх
LSD
Дата 6.6.2011, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


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

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



Раз уж ты при создании имена таблиц (колонок и т.д.) указываешь в кавычках, то и в запросах они должны идти в кавычках в том же регистре что и в оригинале.


--------------------
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   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PostgreSQL | Следующая тема »


 




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


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

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