create table acs_sc_contracts ( contract_id integer constraint acs_sc_contracts_id_fk references acs_objects(object_id) on delete cascade constraint acs_sc_contracts_pk primary key, contract_name varchar(1000) constraint acs_sc_contracts_name_nn not null constraint acs_sc_contracts_name_un unique, contract_desc text constraint acs_sc_contracts_desc_nn not null ); create table acs_sc_operations ( contract_id integer constraint acs_sc_operations_cid_fk references acs_sc_contracts(contract_id) on delete cascade, operation_id integer constraint acs_sc_operations_opid_fk references acs_objects(object_id) on delete cascade constraint acs_sc_operations_pk primary key, contract_name varchar(1000), operation_name varchar(100), operation_desc text constraint acs_sc_operations_desc_nn not null, operation_iscachable_p boolean, operation_nargs integer, operation_inputtype_id integer constraint acs_sc_operations_intype_fk references acs_sc_msg_types(msg_type_id), operation_outputtype_id integer constraint acs_sc_operations_outtype_fk references acs_sc_msg_types(msg_type_id) ); create table acs_sc_impls ( impl_id integer constraint acs_sc_impls_impl_id_fk references acs_objects(object_id) on delete cascade constraint acs_sc_impls_impl_id_pk primary key, impl_name varchar(100), impl_pretty_name varchar(200), impl_owner_name varchar(1000), impl_contract_name varchar(1000) ); create table acs_sc_impl_aliases ( impl_id integer constraint acs_sc_impl_aliases_impl_id_fk references acs_sc_impls(impl_id) on delete cascade, impl_name varchar(100), impl_contract_name varchar(1000), impl_operation_name varchar(100), impl_alias varchar(100), impl_pl varchar(100), constraint acs_sc_impl_alias_un unique(impl_name,impl_contract_name,impl_operation_name) ); create table acs_sc_bindings ( contract_id integer constraint acs_sc_bindings_contract_id_fk references acs_sc_contracts(contract_id) on delete cascade, impl_id integer constraint acs_sc_bindings_impl_id_fk references acs_sc_impls(impl_id) on delete cascade );