Storage Layer |
The storage layer consists of normalized tables with a name beginning with a code usually between two and four letters followed by a dash (‘_’). All these tables have a comparable structure, such as the table in which orders are registered:
create table bubs_opdrachten
( id number(15) not null /* De id kolom is altijd de primaire sleutel. */
, datum_verlening date not null /* Een opdracht-specifiek veld. Merk op dat de naam van datum velden altijd begint met ‘datum_’. */
, volgnummer varchar2(6 char) not null /* Een opdracht-specifiek veld. Merk op dat de lengte van varchar velden altijd uitgedrukt
wordt in karakters (‘char’), zodat de applicatie volledig Unicode-geschikt is. */
, toelichting varchar2(240 char)
, bedrag_verlening number(13,2) not null /* Een opdracht-specifiek veld. Merk op dat de naam van bedragen altijd begint met ‘bedrag_’.
Bovendien is het datatype van een bedrag altijd ‘number(13,2)’. */
, kps_id number(15) not null /* Een verwijzing naar een andere tabel, in dit geval naar de tabel met afkorting ‘kps’.
Deze afkortingen zijn terug te vinden in bubs_tabellen_r. */
, lvr_id number(15) not null
, orig_system_reference varchar2(240 char) /* Een optioneel veld, waarin voor gegevens die geconverteerd of geladen zijn uit een
ander systeem de herkomst vastgelegd kan worden. */
, datum_intrf_geladen date /* Het tijdstip waarop de gegevens vanuit een ander systeem geladen zijn. */
, datum_intrf_bijgewerkt date /* Het tijdstip waarop de gegevens vanuit een ander systeem voor het laatst geladen of bijgewerkt zijn. */
, datum_aangemaakt date not null /* Het tijdstip waarop het gegeven vastgelegd is. */
, aangemaakt_door varchar2(128 char) not null /* De gebruikersnaam van de gebruiker die het gegeven vastgelegd heeft. */
, aangemaakt_in varchar2(128 char) not null /* De naam van het scherm waarin het gegeven vastgelegd is. */
, datum_bijgewerkt date not null /* Het tijdstip waarop het gegeven de laatste keer gewijzigd is. */
, bijgewerkt_door varchar2(128 char) not null /* De gebruikersnaam van de gebruiker die het gegeven de laatste keer gewijzigd heeft. */
, bijgewerkt_in varchar2(128 char) not null /* De naam van het scherm waarin het gegeven de laatste keer gewijzigd is. */
, transactie_aangemaakt number(15) not null /* Het nummer van de transactie in bubs_transacties_v waarmee het gegeven vastgelegd is. */
, transactie_bijgewerkt number(15) not null /* Het nummer van de transactie in bubs_transacties_v waarmee het gegeven de laatste keer gewijzigd is. */
, kolom_soort varchar2(240 char) /* Een specificatie van de inhoud van de vrije tekst kolommen kolom1..kolom10. */
, kolom1 varchar2(240 char) /* Vrije tekst kolommen. Gebruik te bepalen door de organisatie die de applicatie gebruikt. */
, kolom2 varchar2(240 char)
, kolom3 varchar2(240 char)
, kolom4 varchar2(240 char)
, kolom5 varchar2(240 char)
, kolom6 varchar2(240 char)
, kolom7 varchar2(240 char)
, kolom8 varchar2(240 char)
, kolom9 varchar2(240 char)
, kolom10 varchar2(240 char)
, primary key(id) /* Het vastleggen van de primaire sleutel. */
, constraint bubs_odt_kps_fk /* De referentiele constraint van de opdracht naar de kostenplaatsen. */
foreign key (kps_id) /* Merk op dat de naam gelijk is aan ‘bubs_<AFKORTING HERKOMST>_<AFKORTING DOEL>_fk’. */
references bubs_kostenplaatsen (id)
, constraint bubs_odt_lvr_fk
foreign key (lvr_id)
references bubs_leveranciers (id)
)
/
Besides of the primary key there is a natural unique key for each table. In discussions this one can be treated as a real primary key. However, for technical reasons (for example, like being able to update the contract ) the choice was made, to have a separate technical primary key. The name of the natural key index is always ‘bubs_<AFKORTING TABEL>_NK’.
create unique index bubs_odt_nk
on bubs_opdrachten
(kps_id, contract)
/
For every referential constraint a so-called referential index will be created in order to prevent problems with the locking up of rows and to speed up searches.
create index bubs_odt_kps_fk
on bubs_opdrachten
(kps_id)
/
create index bubs_odt_lvr_fk
on bubs_opdrachten
(lvr_id)
/
The reference to the source system must be unique if it is known. In case orig_system_reference is empty, the column does not have to be unique.
create unique index bubs_odt_uk_orig
on bubs_opdrachten
(orig_system_reference)
/
The documentation of the table structure is reflected in the Technical Management screens like Tables and in the business views bubs_tabellen_r and bubs_kolommen_r.
The content of the tables must never be changed directly. This is always done using the business and report views.