Hello Marc!
PS: as there are a lot of machines with XP, Win7, Win8.1
Can I use SQLite in this OS ?
Only WinXP is interesting, You have to make code that compiles with PB 6.04, the last version that supports Windows XP. The latter are fine with the newest.
I'm aware, that you are a hardboiled veteran coder, so I won't tire you with the basics. Instead, I will write about my experiences when I was in your shoes, when I found that I have some data I would like to organize and make it easily editable/searchable.
Just like you I choosed databases (and was a good choice). I was aware of the existence of databases, was able to write querys, but I was not really used to them. I learned the hard way, so even possible that I might have picked up some bad habits I'm not aware.
So my consequencies using SQLITE:
-The most important part is to correctly set up the records of a table
-Table name choice was not important, theres really no wrong choices
-consider an extra column for your records as a UNIQUE INDEX for the row, maybe with autoincrement. Might be handy later on in a way you would not expect.
-material id in your example can be an integer, instead of strings
-aluminium also can be an integer instead of string
-material code must be a string. I use fixed length strings like varchar(20) or varchar(50)
That way the database saves that long of an empty space in the database file, making it easy to change without major shennanigans, but you have to carefully evaluate the maximum length of the possible entries. I assume the code is unique, so you can make it unique. This ensures, that you wont have
a duplicate entry with that material code.
-PB refers to columns as a number, database refers to them as a name. My records have a list of integers, so I named columns with a choosen delimeter and a number like "DB_"+str(#DB_MATERIALID). That way, I was easily able to convert an integer columnid to a database column name vica versa. Was very good when I created buttons to modify them. (I don't use enumeration but directly sets the values to those constants, ensuring not to accidentally mismatch with the database rows)
My post went long and messy. I hope theres at least one thing that might help you in your considerations.