If I understand everything correctly, and all rules hold then if you properly normalize this to meet your needs you should have very little data entry.
This is my thought, but you will have to verify if it meets your needs.
I renamed table rooms to tblRoomConfigurations to be a little more descriptive. If an apartment gets the same room configuration for all rooms then
If an apartment unit type is A, then all Type A apartment units will be identical, no change.
tblRoomConfiguration relates back to UnitType and a Unit relates to a UnitType. So the table tblRoomConfiguration looks like this
tblRoomConfigurations
So this is the configuration fo
RoomID | UnitTypeID_FK | RoomName | Room_Quantity |
---|
1 | 1 | Bedroom 1 | 1 |
2 | 1 | Bedroom 2 | 1 |
3 | 1 | Bathroom 1 | 1 |
7 | 1 | Bathroom 2 | 1 |
8 | 1 | Ensuite | 1 |
so this is the configuration for 1 (type A). Since each room has different components you need to enter each room. Now I put a quantity field, and that was because you mentioned windows and doors. I do not think you want to enter 12 different windows here since I doubt windows have seperate components. But if you have to add components to individual windows then you will need 12 records. If not add Windows with quanity of 12.
If I understand correctly if room gets components which are mirrors, dressers, linen cabinets. So you need your component table
Something like
tblComponents
ComponentID | ComponentName | ComponentCost |
---|
1 | Wardrobe 1130 | $100.00 |
2 | Wardrobe 1390 | $200.00 |
3 | Wardrobe 1465 | $300.00 |
4 | Mirror xxx | $100.00 |
5 | Mirror yyy | $200.00 |
6 | Mirror zzz | $400.00 |
I see lots of different sizes and types of wardrobes and mirrors and assume they have different costs. So you need to enter all the types. There may be more fields in this table. Probably at least need a ComponentType (Mirror, Wardrobe), and maybe dimensions.
Now you need a junction table. To assign components to Rooms. When I say room it is a room in a unit type. So room configuration 1 is the components in all bedroom 1 of unit type A. Which I assume is different from the components in bedroom 1 in unit type B,C.....
tbl_Rooms_Components
ID | RoomID_FK | ComponentID_FK | Component_Quantity |
---|
1 | 1 | 1 | 1 |
2 | 1 | 4 | 2 |
3 | 2 | 2 | 1 |
4 | 2 | 5 | 3 |
Your junction table looks like this.
Room configuration 1 has components 1, 4. 2 has 2,5
In a query putting it together
qryData
UnitName | UnitType | RoomName | ComponentName | ComponentCost | Component_Quantity | TotalCost |
---|
G101 | Type A | Bedroom 1 | Mirror xxx | $100.00 | 2 | $200.00 |
G101 | Type A | Bedroom 1 | Wardrobe 1130 | $100.00 | 1 | $100.00 |
G101 | Type A | Bedroom 2 | Mirror yyy | $200.00 | 3 | $600.00 |
G101 | Type A | Bedroom 2 | Wardrobe 1390 | $200.00 | 1 | $200.00 |
G102 | Type A | Bedroom 1 | Mirror xxx | $100.00 | 2 | $200.00 |
G102 | Type A | Bedroom 1 | Wardrobe 1130 | $100.00 | 1 | $100.00 |
G102 | Type A | Bedroom 2 | Mirror yyy | $200.00 | 3 | $600.00 |
G102 | Type A | Bedroom 2 | Wardrobe 1390 | $200.00 | 1 | $200.00 |
Any future unit of type A gets all of this information.
Does this make sense, for what you are thinking?
If so the only tedious part is populating the initial reference tables. You probably want a nice form to make this easier. However, you populate that once and you are done. Adding future data is simply assiging a unit to a unit type.