Типы ROW
Типы ROW
Тип данных ROW (запись) впервые появился в SQL: 1999. Он не является легким для понимания, и вы на своем пути от начального до среднего уровня программирования на SQL, возможно, так никогда с этим типом данных не встретитесь. В конце концов, в 1986-1999 годах люди прекрасно без него обходились.
Кроме всего прочего, примечательно то, что тип данных ROW нарушает правила нормализации, которые доктор И.Ф. Кодд (E.F. Codd) объявил на начальной стадии теории реляционных баз данных. Об этих правилах более подробно рассказывается в главе 5. Одной из характеристик, определяющих первую нормальную форму, является то, что поле в табличной строке не может быть многозначным. В поле может находиться одно и только одно значение. Однако тип данных ROW дает возможность объявить целую строку данных находящейся в единственном поле единственной строки таблицы — другими словами, объявить строку, вложенную в строку.
Проанализируйте следующую команду SQL, которая для персональной адресной информации (улица, город, штат, почтовый код) использует тип ROW:
CREATE ROW TYPE addr_typ ( | |
Street | CHARACTER VARYING (25) |
City | CHARACTER VARYING(20) |
State | CHARACTER (2) |
PostalCode | CHARACTER VARYING (9) |
) ; |
После того как тип ROW определен, его можно использовать в определении таблицы (с идентификатором клиента, его фамилией, именем, адресом, телефоном):
CREATE TABLE CUSTOMER ( | ||
CustID | INTEGER | PRIMARY KEY, |
LastName | CHARACTER | VARYING (25), |
FirstName | CHARACTER | VARYING (20), |
Address | addr_typ | |
Phone | CHARACTER | VARYING (15) |
) ; |
Здесь преимущество состоит в том, что если в базе данных много таблиц с информацией об адресе, например отдельно для клиентов, поставщиков, персонала и акционеров, то детали адресной спецификации необходимо определить только один раз — в определении типа ROW.