Database design for premium subscription service I am trying to make web application that gives special features to users who pay for premium service and separate them from free accounts. Let's say there is a monthly fee for premium users who can pay for a couple of months and get the features. My question - if I want to keep records of that subscription what's the best way to go about it? 

Here is what I had in mind

User_Table( UserId, isPremium, 'otherUserStuff')

Subscribers_Table( UserId, startDate, endDate, planType)


I think there is too much work with my way since the app has to go through the list every day and check if a user is premium and update the flag (isPremium) and I want to keep record of user subscription history for discount down the line.

Example: User pays for premium every other month that's 6 records for a year which the app has to go through to find if he/she is viable for premium features.Ideally, it should be checking the latest record because the other 5 records are not relevant.
Remove the isPremium column has it can be computed from other database information.

Create a view over Subscribers_Table with something like:

CREATE VIEW premium_users AS
    SELECT DISTINCT UserId FROM Subscribers_TABLE
        WHERE date('now') BETWEEN StartDate and endDate
        AND planType='premium';