The Revit database explained? Guru's please correct and complete

Hi,

I will try to give you an insight on how databases work (like the Revit database in your file) and i will ask the guru’s here to correct me where im wrong and elaborate on their findings.
My knowledge is some 20 years old so i might be wrong here but it is an effort, (bare with me) that could guide you.

  1. A Database is a set of tables.
  2. A database table is sort of an excel sheet
  3. If you create an excel file with column headers your colomnheaders would be called fields in a database.
  4. If you create rows in an excel file with columnheaders they would be called records in a database.
    These two combined would create a flat database.
    To make a database which is smaller in size you could create two tables and refer from one table to another.
    So in Revit, create one or more levels, they would reside in a table called Levels.
    There would also be a table wich stores the LevelTypes and they refer to one another. Properties of the LevelType (eg.Type Name, Structural) and in another table the properties of the Level itself (eg. Elevation, Name)
    If you create Beams or any other family and you place those in a revit model they would refer to the Levels
    table in a field called Reference Level.
    To create a smaller file we give every record an Id or Index.
    So the table of the beams you will have a Field thats called Reference Level that has a value of the index that it refers to in the Level table. In the Level table there is a Field called LevelTypes wich refers to the index in that table, thus creating a smaller file cause only the index refers to a set of parameters stored elsewhere.
    If one would create a record with all the properties of the beam there would be a need for many Fields in a flat database, or one could refer to a set of properties with a simple index to another table.

Adding a shared parameter to the Categories (read table of that Category) would add a parameter to all the records of the table, thus all the families or instances. Adding a parameter to a family would only add one parameter to one record of the Types table.

Ok this is my go at this so pls complete my effort.

Marcel

I think what makes it extra complicated is the plethora of connections between elements. RevitLookup gives you a live look at it.

Here is an old infographic http://thebuildingcoder.typepad.com/files/revit-api-class-diagram.png :

Ref: http://thebuildingcoder.typepad.com/blog/2012/01/no-revit-api-class-diagram.html

1 Like

Revit database, as you mentioned, feels more like a notion of storing data in a Revit file to me. But your bullet points fit the description of a traditional relationship database like MySQL.