The idea behind storing IFC-data in a database:
What could be a way to store IFC-data in a relational database?
Strategy no. 1:
Store every IFC-File in a binary large object field.
(-) no advantage over files
(-) not searchable
(-) no rule checking
Strategy no. 2:
Store every IFC-STEP-line in a text-field.
(-) not searchable
(-) no rule checking
Strategy no. 3:
Store every not abstract Entity-classes (over 600) in its own table. Same with enumerations.
(+) high recognition value in tablenames
(-) no rule checking because you can reference only to one other table, not to all inherited tabels
(-) too much tables (confusing)
Strategy no. 4:
Store every inheritance-step in its own table(782).
(+) recognition value
(+) rule checking on base-classes possible
(-) don’t work with SELECT-Types
(-) too much tables (more confusing than strategy no. 3)
Strategy no. 5:
Divide between entities and their attributes. One table for entities and one table for attributes
(+) only 2 tables (totaly not confusing)
(o) rule checking with triggers
(-) attribute values not typesave
Strategy no. 6:
Divide between Entities and their attributes. One table for Entities and for each basetype a table for Attributes
(+) just a few tables (not confusing)
(o) rule checking with triggers
(+) typesave attribute values
This is a picture of Strategy no. 6:
Up to here is only storing and querying data. No rule checking!
Next time I will talk about rule checking with ifcSQL.ifcSchema, the SQL-representation of the express-schema.