In practice there are changes you can make to your table structures that won't effect queries, but you have to be careful. SQL is not comprehensive enough allow any logical change. There are known limits of SQL. In real life this is a challenge, but generally dealt with by common practices and certain safeguards (such as copying a table before major logical changes). I think by "logical changes" the rule refers to adding columns, changing column data types, and perhaps even adding and deleting rows. It would be very bad (and unlikely) to design a data warehouse where deleting rows from one table made a query fail. (Where "fail" is "crash". Returning no records when no records exist is not failure from the databases's point of view.)Changes to the logical level (tables, columns, rows, and so on) must not require a change to an application based on the structure. Logical data independence is more difficult to achieve than physical data independence.