Загрузка данных


Поля 
groupName	Group Name	VARCHAR2(100)	string	NOT NULL	x	Имя группы рассылки	
emailAddress	Emai laddress	VARCHAR2(128)	string	NOT NULL	x	Email	
firstName	First name	VARCHAR2(50)	string	NOT NULL	
Имя для обращения	
lastName	Last name	VARCHAR2(50)	string	NOT NULL	
Фамилия для обращения	
isInactive	Is inactive	VARCHAR2(1)		NULL	
Y/N, отключение строки без удаления	
validFrom	Valid from	DATE	date	NULL	x	Начало действия версии	
validTo	Valid to	DATE	date	NULL	
Конец действия	

Проверки:
Минимальный набор «защиты от дурака»:

emailAddress — NOT NULL, формат email (regexp), уникальность в рамках groupName;
emailAddress - не важно с какой буквы (заглавная или маленькая) должно восприниматься как одно значение

groupName— NOT NULL, непустой, без пробелов по краям;
firstName, lastName — NOT NULL, непустые;
isInactive — только Y/N (или NULL);
validFrom, validTo — NOT NULL, непустые;
validFrom <= validTo;
запрет на дубли (groupName, emailAddress) с разными isInactive — одна активная строка;