как наследовать с базой данных oracle - PullRequest
0 голосов
/ 14 января 2020

Добрый вечер. Я новичок в базе данных Oracle. Я хотел бы создать 3 таблицы следующим образом, если вы можете объяснить мне, пожалуйста.

Архитектура моей базы данных:

architecture of my database

Ответы [ 2 ]

4 голосов
/ 15 января 2020

Используйте таблицу объектов:

CREATE TYPE country IS OBJECT (
  country_name VARCHAR2(100)
) NOT FINAL;

CREATE TYPE city UNDER country (
  city_name VARCHAR2(100)
) NOT FINAL;

CREATE TYPE capitol UNDER city (
  area VARCHAR2(100)
);

CREATE TABLE countries OF country;
CREATE TABLE cities OF city;
CREATE TABLE capitols OF capitol;

Затем вы можете вставить вот так:

INSERT INTO capitols ( country_name, city_name, area )
VALUES ( 'Country', 'City', 'Area' );

и таблица capitols унаследовала столбцы от своего предкового типа.

дБ <> скрипка

2 голосов
/ 15 января 2020

Исходя из вашего ERD, вы хотите создать три таблицы с внешними ключами. Ниже приведен скрипт, который их создаст.

CREATE TABLE countries (
  country_id NUMBER PRIMARY KEY,
  name_country VARCHAR2(30)
);

CREATE TABLE cities (
  city_id NUMBER PRIMARY KEY,
  name_city VARCHAR2(30),
  country_id NUMBER,
  CONSTRAINT country_fk FOREIGN KEY (country_id)
    REFERENCES countries (country_id)
);

CREATE TABLE capital_cities (
  capital_city_id NUMBER PRIMARY KEY,
  area VARCHAR2(30),
  city_id NUMBER,
  CONSTRAINT city_fk FOREIGN KEY (city_id)
    REFERENCES cities (city_id)
);

Несколько объяснений:

  1. Рекомендуется называть таблицы множественным числом, а столбцы - единственными. Это способствует удобочитаемости и создает единство синтаксиса c.

  2. Таблицы должны иметь независимый первичный ключ. Это помогает поддерживать целостность данных и упрощает создание внешних ключей.

  3. Я сделал предположения при определении типов данных столбцов. Вы можете изменить их в соответствии с вашими данными. Наиболее распространенными типами данных Oracle являются NUMBER, VARCHAR2 и DATE.

  4. Я сделал некоторые предположения относительно отношений между вашими таблицами. Я бы не назвал это хорошей нормализацией, но вы можете узнать больше о нормализации базы данных, исследуя топи c (это слишком широко, чтобы охватить здесь).

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