Hi Jake,
I have had no luck in uploading my very pretty file complete with ORM Schema, Logical Schema and Fact report. The best I can do is to show you the DDL. Here it is for SQL Server.
Hope this helps.
Ken
/* This SQL DDL script was generated by Microsoft Visual Studio. */
/* Driver Used : Microsoft Visual Studio - Microsoft SQL Server Driver. */
/* Document : C:\Documents and Settings\Ken Evans\My Documents\ORM2_NORMA\SourceForgeExample1_LS.vsd. */
/* Time Created: 11 March 2006 18:37. */
/* Operation : From Visio Generate Wizard. */
/* Connected data source : No connection. */
/* Connected server : No connection. */
/* Connected database : Not applicable. */
/* Create CreditCard database. */
use master
go
create database "CreditCard"
go
use "CreditCard"
go
/* Create new table "Account billed Person Address". */
/* "Account billed Person Address" : Account is billed to Person at Address */
/* "Account ID" : Account contains a record of transactions, */
/* "Person id" : Address is a legal postal address. */
/* "Address id" : Address is a legal postal address. */
create table "Account billed Person Address" (
"Account ID" char(10) not null,
"Person id" char(10) not null,
"Address id" char(10) not null)
go
alter table "Account billed Person Address"
add constraint "Account billed Person Address_PK" primary key ("Account ID", "Address id")
go
/* Create new table "CreditCard billed Person Address". */
/* "CreditCard billed Person Address" : CreditCard is billed to Person at Address */
/* "CreditCard" : CreditCard provides the authorised user(Person) with Services. */
/* "Person id" : Address is a legal postal address. */
/* "Address id" : Address is a legal postal address. */
create table "CreditCard billed Person Address" (
"CreditCard" char(10) not null,
"Person id" char(10) not null,
"Address id" char(10) not null)
go
alter table "CreditCard billed Person Address"
add constraint "CreditCard billed Person Address_PK" primary key ("CreditCard", "Address id")
go
/* Create new table "Person Account Bank". */
/* "Person Account Bank" : Person has Account with Bank */
/* "Person id" : Address is a legal postal address. */
/* "Account ID" : Account contains a record of transactions, */
/* "Bank ID" : Role three (Bank) of fact: Person has Account with */
create table "Person Account Bank" (
"Person id" char(10) not null,
"Account ID" char(10) not null,
"Bank ID" char(10) not null)
go
alter table "Person Account Bank"
add constraint "Person Account Bank_PK" primary key ("Person id", "Bank ID")
go
/* Create new table "Person". */
/* "Person" : Address is a legal postal address. */
/* "Person id" : Address is a legal postal address. */
/* "Lives Address id" : Address is a legal postal address. */
/* "Name" : Person has Name */
create table "Person" (
"Person id" char(10) not null,
"Lives Address id" char(10) not null,
"Name" char(10) not null)
go
alter table "Person"
add constraint "Person_PK" primary key ("Person id")
go
/* Create new table "CreditCard". */
/* "CreditCard" : CreditCard provides the authorised user(Person) with Services. */
/* "CreditCard" : CreditCard provides the authorised user(Person) with Services. */
/* "Person id" : Address is a legal postal address. */
/* "Account ID" : Account contains a record of transactions, */
/* "Issued Bank ID" : CreditCard is issued by Bank */
create table "CreditCard" (
"CreditCard" char(10) not null,
"Person id" char(10) not null,
"Account ID" char(10) not null,
"Issued Bank ID" char(10) not null)
go
alter table "CreditCard"
add constraint "CreditCard_PK" primary key ("CreditCard")
go
/* Create new table "Bank". */
/* "Bank" : Table of Bank */
/* "Bank ID" : Bank is identified by BankID */
/* "Address id" : Address is a legal postal address. */
create table "Bank" (
"Bank ID" char(10) not null,
"Address id" char(10) not null)
go
alter table "Bank"
add constraint "Bank_PK" primary key ("Bank ID")
go
/* Create new table "Address". */
/* "Address" : Address is a legal postal address. */
/* "Address id" : Address is a legal postal address. */
/* "City" : Address has City */
/* "ZipCode" : Address has ZipCode */
create table "Address" (
"Address id" char(10) not null,
"City" char(10) not null,
"ZipCode" char(10) not null)
go
alter table "Address"
add constraint "Address_PK" primary key ("Address id")
go
/* Add the remaining keys, constraints and indexes for the table "Account billed Person Address". */
alter table "Account billed Person Address" add constraint "Account billed Person Address_UC1" unique (
"Account ID",
"Person id")
go
/* Add the remaining keys, constraints and indexes for the table "CreditCard billed Person Address". */
alter table "CreditCard billed Person Address" add constraint "CreditCard billed Person Address_UC1" unique (
"CreditCard",
"Person id")
go
/* Add the remaining keys, constraints and indexes for the table "Person Account Bank". */
alter table "Person Account Bank" add constraint "Person Account Bank_UC1" unique (
"Person id",
"Account ID")
go
alter table "Person Account Bank" add constraint "Person Account Bank_UC2" unique (
"Account ID",
"Bank ID")
go
/* Add foreign key constraints to table "Account billed Person Address". */
alter table "Account billed Person Address"
add constraint "Person_Account billed Person Address_FK1" foreign key (
"Person id")
references "Person" (
"Person id")
go
alter table "Account billed Person Address"
add constraint "Address_Account billed Person Address_FK1" foreign key (
"Address id")
references "Address" (
"Address id")
go
/* Add foreign key constraints to table "CreditCard billed Person Address". */
alter table "CreditCard billed Person Address"
add constraint "CreditCard_CreditCard billed Person Address_FK1" foreign key (
"CreditCard")
references "CreditCard" (
"CreditCard")
go
alter table "CreditCard billed Person Address"
add constraint "Person_CreditCard billed Person Address_FK1" foreign key (
"Person id")
references "Person" (
"Person id")
go
alter table "CreditCard billed Person Address"
add constraint "Address_CreditCard billed Person Address_FK1" foreign key (
"Address id")
references "Address" (
"Address id")
go
/* Add foreign key constraints to table "Person Account Bank". */
alter table "Person Account Bank"
add constraint "Person_Person Account Bank_FK1" foreign key (
"Person id")
references "Person" (
"Person id")
go
alter table "Person Account Bank"
add constraint "Bank_Person Account Bank_FK1" foreign key (
"Bank ID")
references "Bank" (
"Bank ID")
go
/* Add foreign key constraints to table "Person". */
alter table "Person"
add constraint "Address_Person_FK1" foreign key (
"Lives Address id")
references "Address" (
"Address id")
go
/* Add foreign key constraints to table "CreditCard". */
alter table "CreditCard"
add constraint "Person_CreditCard_FK1" foreign key (
"Person id")
references "Person" (
"Person id")
go
alter table "CreditCard"
add constraint "Bank_CreditCard_FK1" foreign key (
"Issued Bank ID")
references "Bank" (
"Bank ID")
go
/* Add foreign key constraints to table "Bank". */
alter table "Bank"
add constraint "Address_Bank_FK1" foreign key (
"Address id")
references "Address" (
"Address id")
go
/* Create procedure/function Person_Account_Bank_equal1. */
/* /* The constraint: */ */
/* /* Implied equality constraint. */ */
/* /* is enforced by the following DDL. */ */
Create Procedure Person_Account_Bank_equal1 as
/* Microsoft Visual Studio generated procedure code. */
if (
not exists (select * from "Account billed Person Address" X where
not exists (select * from "Person Account Bank" Y
where X."Account ID" = Y."Account ID")) and
not exists (select * from "Person Account Bank" X where
not exists (select * from "Account billed Person Address" Y
where Y."Account ID" = X."Account ID"))
)
return 1
else
return 2
/* End Person_Account_Bank_equal1 */
go
/* Create procedure/function Account_billed_Person_Address_subset2. */
/* /* The constraint: */ */
/* /* Implied subset constraint. */ */
/* /* is enforced by the following DDL. */ */
Create Procedure Account_billed_Person_Address_subset2 as
/* Microsoft Visual Studio generated procedure code. */
if (
not exists (select * from "CreditCard" X where
not exists (select * from "Account billed Person Address" Y
where X."Account ID" = Y."Account ID"))
)
return 1
else
return 2
/* End Account_billed_Person_Address_subset2 */
go
/* This is the end of the Microsoft Visual Studio generated SQL DDL script. */