I think this StackOverflow Answer probably defines the difference between the two pretty well.
Specifically these two points:
A logical schema is a conceptual model of the data. In relational databases, it's often platform-agnostic - i.e. the logical schema can, in principle, be implemented on any SQL database.
The physical schema converts the logical schema into an implementation that works on a particular database platform. Sometimes, this is a largely mechanical exercise, applying the right datatypes to the attributes...
So in other words, if you had a schema that represented MovieTheaters
, you'd probably have a few tables Movies
, TicketSales
, ConcessionSnacks
. The TicketSales
table would probably have a TicketId
column, a Price
column, and a MovieId
column. This high level detail is essentially your logical schema.
Once you start implementing this schema on a specific database system, take Microsoft SQL Server for example, and using features and data types specific to Microsoft SQL Server, is when it becomes a physics schema. For example, your TicketSales
table's TicketId
column could be a INT
data type with a primary key on it, and the MovieId
could be a BIGINT
field with a many-to-one foreign key on it, and the Price
column could be a DECIMAL(4,2)
. And the Movies
table can have a unique constraint on the MovieTitle
column to prevent duplicate Movies being inserted into it.