I've been working for 4 years on the Dokeos code now, and that item_property table bugged me more than once. It's a clunky, unclear table which holds pretty much all the visibility rights of all the resources in a course. It's quite impractical to deal with visibility in itself, mostly because it only allows for a visible/invisible flag (which is insufficient for most finely-grained permissions systems), and because it holds a super long list of other attributes that you always have to set, and that are never used in the end. Or so I thought...
Well, I never realized that, actually, the "notifications" feature (the one showing an icon next to your course to tell you whether there is something new in this course) uses this table to get, easily, a list of the latest modifications in the course, over all items available. Well that's a discovery, because in this case (I want to say "only"), it makes a lot of sense.
Food for thought in the future... Don't criticize a table structure until you know it fully enough.