Опубликован: 02.08.2007 | Доступ: свободный | Студентов: 3890 / 753 | Оценка: 4.55 / 4.39 | Длительность: 27:09:00
ISBN: 978-5-9556-0111-3
Лекция 13:

Создание физической модели базы данных. Подготовка скрипта для создания базы данных

Подготовка скрипта создания физической базы данных

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

  1. Создание реляционных таблиц. Сначала проектировщик базы данных собирает команды создания таблиц базы данных, которые в нашем случае могут иметь вид
    CREATE TABLE DEPARTAMENT 
    ( 
    	DEPNO 	integer NOT NULL, 
    	DNAME 	char(20),
    	LOC	char(20),
    	MANAGER  	char(20),
    	PHONE  	char(15),
    	PRIMARY KEY (DEPNO)  определение первичного ключа
    );
    
    CREATE TABLE EMPLOYEE
    (
    	EMPNO  	integer NOT NULL,
    	ENAME  	char(25),
    	LNAME  	char(10),
    	DEPNO  	int,
    	SSECNO  	char(10),
    	JOB  	char(25),
    	AGE  	date,
    	HIREDATE  	date NOT NULL WITH DEFAULT,
    	SAL  	dec(9,2),
    	COMM  	dec(9,2),
    	FINE  	dec(9,2),
    	PRIMARY KEY (EMPNO)
    );
    
    CREATE TABLE PROJECT 
    (
    PROJNO  	char(8) NOT NULL,
    PNAME  	char(25),
    BUDGET  	dec(9,2),
    PRIMARY KEY (PROJNO)
    );
    CREATE TABLE EMP_PRJ
    ( 
    	EMPNO 	integer NOT NULL,
    	PROJNO 	char(8) NOT NULL,
    	WORKS 	number,
    	PRIMARY KEY (EMPNO, PROJNO),
    	FOREING KEY (EMPNO) REFERENCES EMPLOYEE,
    	FOREING KEY (PROJNO) REFERENCES PROJECT
    );
  2. Создание индексов. На втором шаге проектировщик базы данных собирает команды создания индексов, которые он решил построить. В нашем случае проектировщик мог принять решения не строить дополнительных индексов, а СУБД Oracle индекс первичного ключа строится автоматически. Поэтому этот раздел скрипта у нас пуст.
  3. Создание представлений. Проектировщик базы данных принял решение создать внешнюю схему для пользователей базы данных и разработал следующий фрагмент скрипта:
    CREATE VIEW DEPARTAMENT_V
    AS SELECT 
    	DEPNO, 
    	DNAME,
    	LOC,
    	MANAGER,
    	PHONE
    FROM DEPARTAMENT;
    
    CREATE VIEW EMPLOYEE_V
    AS SELECT
    	EMPNO,
    	ENAME,
    	LNAME,
    	DEPNO,
    	SSECNO,
    	JOB,
    	AGE,
    	HIREDATE,
    	SAL,
    	COMM,
    	FINE
    FROM EMPLOYEE;
    CREATE VIEW PROJECT_V 
    AS SELECT
    	PROJNO,
    	PNAME,
    	BUDGET
    FROM PROJECT;

    Кроме этого, проектировщик решил добавить в физическую модель базы данных еще четыре представления:

    CREATE VIEW PERSPROJ
    AS SELECT 
    	ENAME, 
    	JOB, 
    	PNAME
    FROM EMPLOYEE, PROJECT, EMPL_PROJ
    	WHERE   EMPLOYEE.EMPNO= EMPL_PROJ.EMPNO
    	    AND EMPL_PROJ.PROJNO=PROJECT.PROJNO;
    
    CREATE VIEW EMPLIST AS
    	SELECT DEPNO, EMPNO, ENAME, JOB
    	FROM EMPLOYEE
    	GROOP BY DEPNO, EMPNO, ENAME, JOB;
    
    CREATE VIEW PERSPROJ
    AS SELECT 
    	ENAME, 
    	JOB, 
    	PNAME
    FROM EMPLOYEE, PROJECT
    WHERE EMPLOYEE.PROJNO=PROJECT.PROJNO;
    
    CREATE VIEW CURPROJ AS
    SELECT *
    FROM PROJECT
    WHERE START_DATE < SYSDATE WITH CHECK OPTION;
  4. Создание синонимов. Проектировщик базы данных решил создать один синоним и добавил в скрип команду его создания:
    CREATE PUBLIC SYNONYM EMP FOR EPMPLOYEE;
  5. Создание пользователей и предоставление привилегий. Проектировщик базы данных решил создать трех пользователей базы данных и не определять никаких ролей, поэтому добавил в скрипт следующие команды:
    CREATE USER Ivan IDENTIFIED BY EXTERNALLY;
    CREATE USER Peter IDENTIFIED BY EXTERNALLY;
    CREATE USER Sidorov IDENTIFIED BY 'alsy_';

    Проектировщик базы данных определил пользователям следующие привилегии:

    GRANT SELECT
    ON EMPLOYEE, DEPARTAMENT, PROJECT, EMP_PRJ
    TO Ivan, Peter, Sidorov;
    
    GRANT INSERT,UPDATE
    ON EMPLOYEE, DEPARTAMENT, PROJECT, EMP_PRJ
    TO Ivan;

Никаких других проектных решений проектировщик базы данных принимать не стал.

Далее он составил подробный отчет по каждому объекту базы данных, фрагмент отчета для реляционной таблицы DEPARTAMENT (таблица 13.15) и предал полученные результаты руководителю ИТ-проекта.

Таблица 13.15. Реляционная таблица DEPARTAMENT. Содержит информацию о подразделениях компании
Номер подразделения DEPNO (PK) integer
Наименование DNAME char(20)
Размещение LOC char(20)
Руководитель MANAGER char(25)
Телефон PHONE char(15)

После выполнения этих действий можно ожидать, что свои основные задачи в рамках ИТ-проекта проектировщик решил успешно.

Литература: [7], [8], [23], [38], [39], [45].

Александра Каева
Александра Каева
Михаил Забелкин
Михаил Забелкин